遍历带有列表的字典

时间:2018-12-09 20:15:57

标签: ansible

我想知道是否有一种方法可以遍历值列表的字典。

我有一个变量,为:

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 个答案:

答案 0 :(得分:1)

我相信您要寻找的是product(这只是itertools.product的过滤器)

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 }}