下面有YAML格式的数据
ospf_neighbors:
- data: xe-0/0/1.0
- data: Full
- data: xe-0/0/10.0
- data: Full
- data: xe-0/0/11.0
- data: Full
我想做的是创建一个字典,基本上赔率是键,偶数是值。这就是目标:
ospf_neighbors_dict:
xe-0/0/1.0: Full
xe-0/0/10.0: Full
xe-0/0/11.0: Full
- name: Create Dict Pair for OSPF neighbors
set_fact:
ospfneighbors_dict: "{{ ospfneighbors_dict|
default({})|
combine({item['data'][::2]: item['data'][1::2]}) }}"
with_items: "{{ ospf_neighbors }}"
但这只是拼接数据,例如";Fl":"ul";
例如
- set_fact:
ospf_neighbors_dict: "{{ dict(_keys|zip(_vals)) }}"
vars:
_data: "{{ ospf_neighbors|map(attribute='data')|list }}"
_keys: "{{ _data[::2] }}"
_vals: "{{ _data[1::2] }}"
创建目标
ospf_neighbors_dict:
xe-0/0/1.0: Full
xe-0/0/10.0: Full
xe-0/0/11.0: Full
很多解决方案,其中一个:
- set_fact:
ospf_neighbors_dict: "{{ ospf_neighbors_dict|d({})|
combine({ospf_neighbors[item].data:
ospf_neighbors[item + 1].data}) }}"
loop: "{{ range(0, ospf_neighbors|length, 2) }}"
结果:
ospf_neighbors_dict:
xe-0/0/1.0: Full
xe-0/0/10.0: Full
xe-0/0/11.0: Full