首页 文章

通过带有列表的字典进行迭代

提问于
浏览
0

我想知道是否有办法迭代一个值为列表的字典 .

我有一个变量:

dict_var: {"key1": [value1,value2,value3], "key2": [value4,value5,value6]}

我的任务看起来像这样:

- name: "Print key and value"
debug:
  msg: "{{item.key}} and {{item.value}}"
with_dict: "{{ dict_var }}"

上面的任务将输出打印为:

key1 and [value1,value2,value3]    
key2 and [value4,value5,value6]

有没有办法打印输出如下?

key1 and value1   
key1 and value2   
key1 and value3   
key2 and value4   
key2 and value5   
key2 and value6

1 回答

  • 1

    我相信你要找的东西是product(这只是itertools.product的jinja过滤器)

    debug:
      msg: '{{ item.0 }} and {{ item.1 }}'
    loop: |
      {% set r = [] %}
      {% for k in dict_var %}
      {%   set x = [k] | product(dict_var[k]) | list %}
      {%   set _ = r.extend(x) %}
      {% endfor %}
      {{ r }}
    

相关问题