循环使用Python和Django中的Dict列表
我有一个查询集,返回如下结果:循环使用Python和Django中的Dict列表,python,django,Python,Django,我有一个查询集,返回如下结果: defaultdict(<type 'list'>, { 123: [ {'field1': 123, 'field2': 'August', 'field3': 50}, {'field1': 123, 'field2': 'September', 'field3': 25}, {'field1': 123
defaultdict(<type 'list'>,
{
123:
[
{'field1': 123, 'field2': 'August', 'field3': 50},
{'field1': 123, 'field2': 'September', 'field3': 25},
{'field1': 123, 'field2': 'October', 'field3': 70}
],
789:
[
{'field1': 789, 'field2': 'August', 'field3': 80},
{'field1': 789, 'field2': 'September', 'field3': 22},
{'field1': 789, 'field2': 'October', 'field3': 456}
],
})
我尝试了在results.items
中循环,但它没有返回任何结果。我尝试使用键,value
,它也不返回任何内容。我最初认为我能够为循环创建一个嵌套的,并循环通过每个
:
{% for each in results %}
{% for row in each %}
{{ row }}
{% endfor %}
{% endfor %}
但是返回的'int'对象不可编辑
我不确定我错过了什么,如果有人能给我指出正确的方向 我还没有看到Python的这种语法。我没有和django一起工作过。所以,我将使用您自己的格式,只修改一件事。对于结果[每个]
中的行,您应该使用,而不是对每一行说<代码>结果
是一个字典,每个
都是一个键。如果您想要该键的字典值,则需要通过results[each]
获得它。现在,如果值是可编辑的,则可以循环遍历该值
{% for each in results %}
{% for row in results[each] %}
{{ row }}
{% endfor %}
{% endfor %}
实际上,您正在尝试遍历一个整数
第一个for循环遍历results.keys()
,这就是为什么要返回第一个字典中的键整数
类似的内容在python中也可以使用:
for x in results:
for y in results[x]:
print y
或者,您可以像这样使用.items()/.iteritems():
for k, v in results.items():
for small_dict in v:
print small_dict
考虑到您正试图在Django模板中实现这一点,我认为第一个解决方案对您来说是可行的 您可以使用dict的value
方法来获取每个子列表,然后可以在嵌套循环中对其进行迭代:
{% for each in results.values %}
{% for row in each %}
{{ row.field1 }}
{{ row.field2 }}
{{ row.field3 }}
{% endfor %}
{% endfor %}
非常感谢。部分问题是我通过执行results=defaultdict(list)
初始化results
,但是执行results={}
处理results.items
for k, v in results.items():
for small_dict in v:
print small_dict
{% for each in results.values %}
{% for row in each %}
{{ row.field1 }}
{{ row.field2 }}
{{ row.field3 }}
{% endfor %}
{% endfor %}