Jinja2遍历字典项列表

时间:2019-05-03 18:01:02

标签: python flask jinja2

我有一个正在循环浏览的字典项列表。
我可以得到年份的密钥,当我尝试从字典中获取数据时,它将再次打印年份。

  [{'2020': [], '2019': ['05'], '2018': ['02', '01']}] 
  {% for d in  dirs %}
      {% for sd in d %}
     {{ sd }}
         {% for doy in sd %}   
            {{ doy }}<br>
         {% endfor %}<br><br>
    {% endfor %}
{% endfor %}

什么是打印

 2020
 2
 0
 2
 0

2019
2
0
1
9

2018
2
0
1
8

我要打印的是

2020
2019
05
2018
02
01

2 个答案:

答案 0 :(得分:2)

更改

{% for doy in sd %}

{% for doy in d[sd] %}

这里的理由是,使用for ... in ...语法在字典上进行迭代会在字典的键上进行迭代。这意味着您的嵌套循环然后尝试循环在字典键内的值 而不是字典键内的值。

答案 1 :(得分:1)

如上所述,您可以通过修改第三个循环来实现。
为了简化:

list = [{'2020': [''], '2019': ['05'], '2018': ['02', '01']}]

模板:

{% for obj in list %}
  {% for obj2 in obj %}
    <p>{{ obj2 }}</p>
    {% for obj3 in obj[obj2] %}
     <p>{{ obj3 }}</p>
    {% endfor %}
  {% endfor %}
{% endfor %}

输出:

2020   
2019   
05   
2018  
02   
01