如果我有以下列表:的Jinja2:通过遍历下来列,而不是跨行建表
headers = ['Name', 'Age']
rows = [['Johnny', 30], ['Zack', 20]]
我可以很容易地通过Jinja2的一张桌子(https://jsfiddle.net/equbh9du/1/):
<table class="table table-bordered table-hover">
<thead>
<tr>
{% for h in headers %}
<td>{{ h }}</td>
{% endfor %
</tr>
</thead>
<tbody>
{% for row in rows %}
<tr>
{% for item in row %}
<td>{{ item }}</td>
{% endfor %}
</tr>
{% endfor %}
</tbody>
</table>
我我注意到它更容易(和更有条理地)作为字典返回我的数据:
d = {'Name': ['Johnny', 'Zack'], 'Age': [30, 20]}
Is there一个简单的方法来建立我使用这个字典上面建立的表。我想我需要在继续下一列之前完成每列的迭代(在上面的例子中,我完成了遍历每行的迭代,然后继续到下一行)。
这是代码我到目前为止,但我发现一个搞砸表(https://jsfiddle.net/j164fqy9/1/):
<table class="table table-bordered table-hover">
<thead>
<tr>
{% for h in d %}
<td>{{ h }}</td>
{% endfor %
</tr>
</thead>
<tbody>
{% for h, col_values in d.items() %}
{% for item in col_values %}
<tr>
<td>{{ item }}</td>
</tr>
{% endfor %}
{% endfor %}
</tbody>
</table>
编辑:如果HTML标准的第一防止迭代下来列,那么我需要构造headers
和rows
from d
。低于最好的方式来做到这一点?
headers = [h for h in d]
rows = [[l[i] for h, l in d.items()] for i in range(len(d['Name']))]
http://stackoverflow.com/questions/1285456/html-table-by-rows-or - 列 –