簡體   English   中英

使用 Jinja2 模板訪問嵌套字典

[英]Accessing nested dictionary using Jinja2 templating

所以我有這個字典列表:

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

我想使用 jinja2 訪問“值”鍵。

但是,我似乎無法獲得適合它的語法。 我知道它可能是三個相互內部的 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 邏輯,你應該一切都准備好了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM