带有iteritems()的jinja groupby

2024-09-28 17:06:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一本字典

a:
    attr1: abc
    attr2: fddf
b:
    attr1: abc
    attr2: djfkdjf
...

我想按“attr1”分组。我知道我能做到以下几点

^{pr2}$

但这不是我想要的,因为当我使用values()时,我会丢失键。在

我需要使用iteritems(),但它返回一个元组列表,这在groupby中不起作用


Tags: 列表字典元组valuesabcgroupby我会attr1
2条回答

我相信dict2items | groupby('value.attr1')会做你想做的,尽管由于缺少items2dict,你必须用手把答案的“值”面粘在一起:

- set_fact:
    reassembled: |
      {% for grouper in (mydict | dict2items | groupby('value.attr1')) %}
      {% set a_key = grouper[0] %}
      {% set d = dict() %}
      {% for it in grouper[1] %}
      {%   set _ = d.update({it["key"]: it["value"]}) %}
      {% endfor %}
      the key = {{ a_key }} and d={{ d }}
      {% endfor %}

我会耐心地等待techraf指出更简洁的方法,但既然没有其他人来插手,我想我应该试试看。在

原来groupby支持索引。使用items()代替values()

我就这样做到了

{% for grouper in mydict.items()|groupby('1.attr1') %} 
   something 
{% endfor %}

相关问题 更多 >