我有3个词典数据[' d1'],数据[' d2']和数据[' d3']。
我想要的是这样的表,从每个字典中获取密钥并将它们呈现为:
Team 1 | Team 2 | Team 3
key 1 from d1 | key 1 from d2 | key 1 from d3
key 2 from d1 | key 2 from d2 | key 2 from d3
key 3 from d1 | key 3 from d2 | key 3 from d3
key 4 from d1 | key 4 from d2 | key 4 from d3
我尝试了什么
<thead>
<tr>
<th>Team 1</th>
<th>Team 2</th>
<th>Team 3</th>
</tr>
</thead>
<tbody>
<tr>
{% for key, value in d1.items %}
<td>{{ key }}</td>
{% endfor %}
</tr>
<tr>
{% for key, value in d2.items %}
<td>{{ key }}</td>
{% endfor %}
</tr>
<tr>
{% for key, value in d3.items %}
<td>{{ key }}</td>
{% endfor %}
</tr>
</tbody>
或
<thead>
<tr>
<th>Team 1</th>
<th>Team 2</th>
<th>Team 3</th>
</tr>
</thead>
<tbody>
{% for key, value in d1.items %}
<tr>
<td>{{ key }}</td>
</tr>
{% endfor %}
{% for key, value in d2.items %}
<tr>
<td>{{ key }}</td>
</tr>
{% endfor %}
{% for key, value in d3.items %}
<tr>
<td>{{ key }}</td>
</tr>
{% endfor %}
</tbody>
但它以不同的方式显示它们。我怎样才能实现上表?
当前表格显示如下:
Stalone Sobont arda AAA
Sardina Jhonny Lala Vali
LilJon Scuipy SSS Mazare
views.py
stats = data['scoruri'].copy()
data['d1'] = {}
data['d2'] = {}
data['d3'] = {}
for key, value in stats.copy().items():
if not data['d1'] or sum(data['d1'].values()) <= sum(data['d2'].values()) and \
sum(data['d1'].values()) <= sum(data['d3'].values()):
name, score = max(stats.items(), key=lambda p: p[1])
data['d1'][name] = score
stats.pop(name, score)
data['total_1'] = sum(data['d1'].values())
elif not data['d2'] or sum(data['d2'].values()) <= sum(data['d1'].values()) and \
sum(data['d2'].values()) <= sum(data['d3'].values()):
name, score = max(stats.items(), key=lambda p: p[1])
data['d2'][name] = score
stats.pop(name, score)
data['total_2'] = sum(data['d2'].values())
elif not data['d3'] or sum(data['d3'].values()) <= sum(data['d1'].values()) and \
sum(data['d3'].values()) <= sum(data['d2'].values()):
name, score = max(stats.items(), key=lambda p: p[1])
data['d3'][name] = score
stats.pop(name, score)
data['total_3'] = sum(data['d3'].values())
答案 0 :(得分:0)
您希望dict的所有键都打印在列中,而您要在行中打印dict的所有键
您可以将dicts组合到一个列表中(在视图中),然后在模板中迭代此列表。
在视图中:
data_dicts = [d1,d2,d3]
在模板中:
<tr>
{% for d in data_dicts %}
{% for key, value in d.items %}
<td> {{ key }} </td>
{% endfor %}
{% endfor %}
</tr>
此外,this long answer也可能有所帮助。
答案 1 :(得分:0)
所以,这就是你如何实现这个表:
from collections import OrderedDict
d1 = {1: 'Alex', 2: 'Andrei'}
d2 = {1: 'Cristi', 2: 'Ion'}
d3 = {1: 'Sandu', 2: 'Marica'}
d = dict()
d1 = OrderedDict(sorted(d1.items()))
d2 = OrderedDict(sorted(d2.items()))
d3 = OrderedDict(sorted(d3.items()))
d1 = list(d1.items())
d2 = list(d2.items())
d3 = list(d3.items())
d['team_1'] = d1
d['team_2'] = d2
d['team_3'] = d3
d = OrderedDict(sorted(d.items()))
{% for i in d.items %}
<tr>
<td>{{ i.1.0.1 }}</td>
</tr>
{% endfor %}