[英]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.