Jinja2 перебирает список элементов словаря - PullRequest
1 голос
/ 03 мая 2019

У меня есть список элементов словаря, над которыми я зацикливаюсь.
Я могу получить ключ года - когда я пытаюсь получить данные в словаре, он снова печатает год.

  [{'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 ]

2 голосов
/ 03 мая 2019

Изменение

{% for doy in sd %}

до

{% for doy in d[sd] %}

Причина в том, что перебор словаря с использованием синтаксиса for ... in ... перебирает ключи словаря. Это означает, что ваш вложенный цикл затем пытался перебрать значения внутри ключа словаря , а не значение ключа словаря.

1 голос
/ 04 мая 2019

Как упомянуто выше, вы можете добиться этого, изменив третий цикл.
Для упрощения:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...