我有3list来自烧瓶,其中包含“名称”,“部门”,“位置”,我需要创建一个表并使用所有3list污染行...
**问题我无法一次访问所有3list数据
所以我读了StackOverflow的某个地方,将列表链接到字典,并将字典链接到列表
an_item = dict(name=names, department= departments, position=positions)
itema.append(an_item)
**如果名称是字符串而不是列表,则可以正常工作
烧瓶侧面:
names = ["Alice", "Mike", ...]
department = ["CS", "MATHS", ... ]
position = ["HEAD", "CR", ....]
an_item = dict(name=names, department= departments, position=positions)
itema.append(an_item)
HTML:
<tbody>
{% for item in items %}
<tr>
<td>{{item.name}}</td> #printing the list ["alice", "mike", ...]
<td>{{item.department}}</td>
<td>{{item.position}}</td>
</tr>
{% endfor %}
</tbody>
我想要一个简单的名称部门和职位表
Name Department Position
Alice CS Head
Mike MATHS CR
答案 0 :(得分:1)
这是因为您错误地构建了词典。当您执行dict(name=names, department= departments, position=positions)
时,实际上只是创建带有名称列表值的名称键,以及带有部门列表的部门键。这意味着item.name
实际上是所有名称的列表。
我想您想要的是每个名称部门位置的词典列表。这样做的方法是遍历并行列表,然后为每个索引创建字典并追加到列表中。
names = ['joe', 'alice', 'bill']
departments = ['CS', 'Math', 'Eng']
position = ['HEAD', 'CR', 'PROF']
items = []
for i in range(len(names)):
item = dict(name=name[i], department=departments[i], position=positions[i])
items.append(item)
print(items) # [{'name': 'joe', 'deparment': 'CS', 'position': 'HEAD}, {'name': 'alice', 'department': 'Math',...}...]
然后在HTML中,您将需要使用方括号运算符或.get()
<tbody>
{% for item in items %}
<tr>
<td>{{item['name']}}</td>
<td>{{item['department']}}</td>
<td>{{item['position']}}</td>
</tr>
{% endfor %}
</tbody>
这应该为您提供所需的桌子。