Ansible根据列表创建一个字典,其中赔率是关键,偶数是值



下面有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

最新更新