我需要根据键名上的模式提取字典的子集。 例如,在下面的v中,我需要提取key-> values section1 *。
下面的代码分配值列表,但是我仍然没有找到保留key-> map设置的方法。
- set_fact:
v:
section1_1: true
section1_2: false
section2_1: true
section2_2: false
section3: true
- set_fact:
v2: "{{ v | select('match','^section1_.*') | map('extract', v) | list }}"
- debug:
var: v2
有什么需要的吗? 谢谢。
答案 0 :(得分:1)
合并dict2items
和items2dict
过滤器:
- debug:
msg: "{{ v | dict2items | selectattr('key', 'match', '^section1') | list | items2dict }}"
答案 1 :(得分:0)
fatal: [localhost]: FAILED! => {"msg": "template error while templating string: no filter named 'items2dict'. String: {{ v |
dict2items | selectattr('key','match','^ section1_')|列表| items2dict}}“}
如果我查看/usr/lib/python2.7/dist-packages中的源代码,我会看到有对它的引用,但没有真正的函数定义
ansible / plugins / filter / core.py:引发AnsibleFilterError(“ items2dict需要一个列表,取而代之的是%s。”%type(mylist)) ansible / plugins / filter / core.py:“ items2dict”:list_of_dict_key_value_elements_to_dict,
我正在运行2.5.1。我需要更高版本吗?