В Python вы можете перебирать итерацию, если 2-tuples , вызывая функцию .items()
в словаре.В шаблонах Django мы также можем сделать это:
{% for category_name<b>, category</b> in all_options<b>.items</b> %}
{{ category_name }} #Condenser (WC)
{% for subcat<b>_name, subcat</b> in <b>category.items</b> %}
{{ subcat<b>_name</b> }} #Water Box
{% for item<b>_name, item</b> in <b>subcat.items</b> %}
{{ item<b>_name</b> }} #2MPA Condenser Marine Water Box
{% for chiller in item.chillers %}
{{ chiller.option }} #WB200.3K.F2HVKA
{% endfor%}
{% endfor%}
{% endfor%}
{% endfor %}
(или что-то похожее на это)
Так что здесь category_name
- это ключ , связанный сэлемент словаря, а category
- это значение (так что в данном случае это и словарь *).Затем вы можете, например, снова выполнить перечисление по этому словарю и т. Д.
Обратите внимание, что в словарях Python неупорядочено : это означает, что итерация может происходить в любомзаказ возможен.Если вам нужен фиксированный заказ, я советую вам использовать список из двух кортежей, в этом случае вам, конечно, не нужно звонить .items
.Кроме того, словарь может содержать только хешируемых ключей, и каждый ключ может встречаться максимум один раз .Это не из-за Django, это просто то, как словари спроектированы в Python.
Как уже говорилось ранее, в случае, если вы хотите упорядоченную коллекцию элементов, такую, что «ключ» не должен быть хэшируемым и /или произойти несколько раз, я бы посоветовал вам использовать список из двух кортежей (что-то вроде [(k1, v1), (k2, v2)]
с ki
ключом и vi
соответствующим значением).
В случае, если вы только интересующие значения, вы можете использовать .values
, что приведет к итерации по значениям словаря.