https://docs.ansible.com/ansible/latest/collections/community/general/dict_filter.html
This is an even more elegant solution using the community.general.dict module:
- name: list2dict
set_fact:
list2dict: >-
{{ test | map('zip', ['name', 'addr'])
| map('map', 'reverse')
| map('community.general.dict') }}
- name: list2dict
debug: var=list2dict
Walter
--
Walter Rowe, Division Chief
Infrastructure Services Division
Mobile: 202.355.4123
On Aug 29, 2024, at 7:22 AM, Rowe, Walter P. (Fed) <[email protected]> wrote:
- name: list of list to list of dict
hosts: localhost
become: false
gather_facts: false
vars:
test:
- - host1
- fd99:9999::1
- - host1
- 10.0.1.1
- - host2
- fd99:9999::1
- - host2
- 10.0.1.1
- - foo
- fd99:9999::1
- - foo
- 10.0.1.1
- - baz
- fd99:9999::1
- - baz
- 10.0.1.1
tasks:
- name: test
debug: var=test
- name: list 2 dict
set_fact:
list2dict: "{{ list2dict|default([]) + [ thisdict ] }}"
loop: "{{ test }}"
vars:
thisdict: { name: "{{ item.0 }}", addr: "{{ item.1 }}" }
- name: list2dict
debug: var=list2dict
Walter
--
Walter Rowe, Division Chief
Infrastructure Services Division
Mobile: 202.355.4123
On Aug 29, 2024, at 5:40 AM, Dick Visser <[email protected]> wrote:
Hii
I have something like this in my vars:
test:
- - host1
- fd99:9999::1
- - host1
- 10.0.1.1
- - host2
- fd99:9999::1
- - host2
- 10.0.1.1
- - foo
- fd99:9999::1
- - foo
- 10.0.1.1
- - baz
- fd99:9999::1
- - baz
- 10.0.1.1
Each first and second list item should become keys in a dict, like this:
conv:
- name: host1
address: fd99:9999::1
- name: host1
address: 10.0.1.1
- name: host2
address: fd99:9999::1
- name: host2
address: 10.0.1.1
- name: foo
address: fd99:9999::1
- name: foo
address: 10.0.1.1
- name: baz
address: fd99:9999::1
- name: baz
address: 10.0.1.1
I tried a few things with mapping and filtering, but can't see how to do it....
any suggestions? Ideally no tasks, just filters....
thx
--
You received this message because you are subscribed to the Google Groups
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to
[email protected]<mailto:[email protected]>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/CAF8BbLamT%3Ds3H4R%3DcxShSg16KrSr%2B4%3D%3DUytgZbjPivhMK1rfmg%40mail.gmail.com<https://groups.google.com/d/msgid/ansible-project/CAF8BbLamT%3Ds3H4R%3DcxShSg16KrSr%2B4%3D%3DUytgZbjPivhMK1rfmg%40mail.gmail.com?utm_medium=email&utm_source=footer>.
--
You received this message because you are subscribed to the Google Groups
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/6F5FBEE5-028A-4AB2-ADC9-5B2B535290F7%40nist.gov.