python - 使用 Jinja2 模板访问嵌套字典

标签 python dictionary jinja2

所以我有这个字典列表:

mylist = [{'Score': 33, u'interfaces': [{u'ip_addresses': [{u'value': u'172.16.153.71', }]}]}]

我想使用 jinja2 访问“value”键。

但是,我似乎无法获得正确的语法。我知道这可能是三个彼此内部的 for 循环,但我无法正确理解。

我可以用 python 来做:

for i in mylist:
  for x in i['interfaces']:
    for y in x['ip_addresses']:
      print y["value"]

也许是这样的?:

            {% for obj in mylist %}
              {%for obj2 in obj %}
                {for obj3 in obj2 %}
                    {{ obj3.value }}",
                {% endfor % }
              {% endfor % }
            {% endfor % }

但这显然不起作用。任何帮助将不胜感激。谢谢。

最佳答案

让我们将您的 Python 循环与 Jinja 循环进行比较。外部 Python 循环是:

for i in mylist:

对应的Jinja循环是:

{% for obj in mylist %}

看起来不错。但是,虽然你的下一个 Python 循环看起来像:

for x in i['interfaces']:

您对应的 Jinja 循环是:

{%for obj2 in obj %}

这显然不是做同样的事情;由于您已经有了 Python 循环中的逻辑,因此不清楚为什么要进行此更改。等效的循环是:

{% for obj2 in obj.interfaces %}

或者:

{% for obj2 in obj['interfaces'] %}

...它更接近 Python,但对于 Jinja 来说不太惯用。您对下一个嵌套循环也有同样的问题。

如果您重写 JInja 循环以简单地遵循 Python 逻辑,那么您应该已准备就绪。

关于python - 使用 Jinja2 模板访问嵌套字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36313651/

相关文章:

python - 使用 Python 和 sndhdr 模块检查文件是否为音频文件

python - 是否存在某种倒置的if?在Python中

python - 如何在python中将字符串列表转换为字典

java - 将结果集值放入 Collection 对象,然后添加到 ArrayList

jinja2 - 检查 Jinja2 中的数组是否为空

python - 如何在 jinja 模板中循环字典

python - 使用python请求添加代理 header

python - 如何将字典作为最后一个元素添加到字典列表中?

python - 如何在 Bottle 404处理程序上传递自定义HTML?

python - 适用于 Windows、Python 3、64 位的 Theano 安装