Как объединить серию объектов в jmespath
Я получаю массив результатов после выполнения include_vars
с with_items
results:
- ansible_facts:
tag_Cluster_A:
name: Thinking cluster
words:
- Honk
- Thonk
- ansible_facts:
tag_Cluster_B:
name: Helloing Cluster
words:
- HOI
- HOI HOI
Я пытаюсь получить объект с результатами в плоский объект, который просто содержит tag_Cluster_*
вещи.
tag_Cluster_A:
name: Thinking cluster
words:
- Honk
- Thonk
tag_Cluster_B:
name: Helloing Cluster
words:
- HOI
- HOI HOI
Запрос results[].ansible_facts
результаты в массиве, как:[{tag_Cluster_A:{}},{tag_Cluster_B:{}}]
который находится в 1 шаге от желаемого результата.
Как мне их помять?
1 ответ
Если mylist
является [{tag_Cluster_A:{...}},{tag_Cluster_B:{...}}]
, затем
mydict: "{{ dict(mylist | map('dictsort') | sum(start=[])) }}"
будет {tag_Cluster_A:{...},tag_Cluster_B:{...}}
,
В этом трюке мы применяем dictsort
примените фильтр к каждому элементу исходного списка, затем сгладьте список, чтобы получить единый список пар, затем преобразуйте его обратно в dict.