【发布时间】:2020-01-09 07:47:57
【问题描述】:
我有一个名为 data 的字典列表。
对于我想要访问的数据中的every_archive every_archive['key1']['key2']
第一个键是常数:“单位”,但第二个键取决于循环。
我已经试过了:{{ archive['units'][{{item['param']}}] }}
其中item['param'] item 是循环中的另一个迭代器,item['param'] 是第二个键。
【问题讨论】:
我有一个名为 data 的字典列表。
对于我想要访问的数据中的every_archive every_archive['key1']['key2']
第一个键是常数:“单位”,但第二个键取决于循环。
我已经试过了:{{ archive['units'][{{item['param']}}] }}
其中item['param'] item 是循环中的另一个迭代器,item['param'] 是第二个键。
【问题讨论】:
据我了解,您有一个包含一些嵌套字典的列表;如果是这样,并且您的数据看起来像这样:
data = [{'foo': {'bar1': 'buzz1', 'bar2': 'buzz2'}}, {'foo': {'bar3': 'buzz3', 'bar4': 'buzz4'}}]
如果你使用这个 Jinja2:
{% for every_archive in data %}
{% for key1, archive1 in every_archive.items() %}
{% for key2, value2 in archive1.items() %}
<p>{{ key1 }} - {{ key2 }} - {{ value2 }}</p>
{% endfor %}
{% endfor %}
{% endfor %}
你会得到这个输出:
foo - bar1 - buzz1
foo - bar2 - buzz2
foo - bar3 - buzz3
foo - bar4 - buzz4
同样,您将从
获得相同的输出<p>{{ key1 }} - {{ key2 }} - {{ archive1[key2] }}</p>
【讨论】:
请看下面的格式!该结构将与您在 Python 中遍历字典的方式非常相似,但是对于您不想显示的每个语句,使用 jinja {% %} 并在要显示的每个表达式周围使用 {{ }}。
取自How to iterate through a list of dictionaries in jinja template?
Data: parent_dict = [{'A':{'a':1}},{'B':{'b':2}},{'C':{'c':3}},{'D':{'d':4}}]
In Jinja2 iteration:
{% for dict_item in parent_dict %}
{% for key1 in dict_item %}
{% for key2 in dict_item[key1] %}
<h2>Value: {{dict_item[key1][key2]}}</h2>
{% endfor %}
{% endfor %}
{% endfor %}
【讨论】:
key2 不是字符串,是item['param'] 的值
data,其中包含item,这是一个字典,我还收到details,它也是一个字典。然后我有{ % for elem in data['item'] %} <p> {{ details['units'][ elem['param'] ] }} </p>。问题是elem['param'] 已经加入,我需要将它用作details 的第二个键。