[英]Loop Through List of Dict of Lists in Python and Django
我有一个查询集,返回的结果如下:
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}
],
})
我试图遍历模板中的列表,但是我只能得到要显示的键,例如:
{% for each in results %}
{{ each }}<br>
{% endfor %}
返回值:
123
789
我尝试遍历results.items
,但不返回任何内容。 我尝试使用key, value
,它也不会返回任何内容。 我最初以为我可以嵌套一个for loop
,并循环遍历each
循环:
{% for each in results %}
{% for row in each %}
{{ row }}
{% endfor %}
{% endfor %}
但这返回的'int' object is not iterable
如果有人能指出正确的方向,我不确定我会缺少什么!
我还没有看到Python的这种语法。 我没有和django合作。 因此,我将只使用您自己的格式,并只修改一件事。 而不是说for row in each
,而应该for row in results[each]
使用for row in results[each]
。 results
是一本字典, each
都是一个键。 如果您想要该键的字典值,则需要通过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模板中执行此操作,我认为第一个解决方案将为您工作。
您可以使用字典的values
方法获取每个子列表,然后可以在嵌套循环中对其进行迭代:
{% for each in results.values %}
{% for row in each %}
{{ row.field1 }}
{{ row.field2 }}
{{ row.field3 }}
{% endfor %}
{% endfor %}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.