在Ansible中,可以使用dict2items
过滤器和groupby
过滤器来按键分组字典,并使用set_fact
模块将结果设置为事实以供以后重用。下面是一个示例解决方法:
---
- hosts: localhost
gather_facts: false
vars:
my_dict:
key1: value1
key2: value2
key3: value3
key4: value4
key5: value5
tasks:
- name: Group dictionary by keys
set_fact:
grouped_dict: "{{ my_dict | dict2items | groupby('key') | map('map', 'value') | list }}"
- name: Display grouped dictionary
debug:
var: grouped_dict
在上面的示例中,首先定义了一个名为my_dict
的字典变量。然后,使用dict2items
过滤器将字典转换为一个包含键值对的列表。接下来,使用groupby
过滤器按键分组列表。最后,使用map
过滤器和list
过滤器来获取每个分组中的值,并将结果设置为名为grouped_dict
的事实。
运行这个Playbook后,可以看到grouped_dict
事实包含了按键分组后的字典。你可以根据需要修改和使用这个事实。