[英]Ansible create a dictionary from list where odds are keys evens are values
我在下面有 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 }}"
但那只是拼接數據,eg "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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.