Thanks Todd. Honestly I came right off the dict module page that has an almost exact example.
Walter -- Walter Rowe, Division Chief Infrastructure Services Division Mobile: 202.355.4123 On Aug 29, 2024, at 8:34 AM, Todd Lewis <uto...@gmail.com> wrote: That is elegant. Much better than the abomination I came up with: --- # dick-visser-03.yml - name: Add helper keys to list of dicts hosts: localhost connection: local gather_facts: no 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: Dictify the test data - 1 ansible.builtin.debug: msg: - 'test' - '{{ test }}' - ' test | map("map","community.general.dict_kv","value")' - '{{ test | map("map","community.general.dict_kv","value") }}' - ' test | map("map","community.general.dict_kv","value") | map("zip",[{"key":"name"},{"key":"address"}])' - '{{ test | map("map","community.general.dict_kv","value") | map("zip",[{"key":"name"},{"key":"address"}]) }}' - ' test | map("map","community.general.dict_kv","value") | map("zip",[{"key":"name"},{"key":"address"}]) | map("map","flatten",1) | map("map","combine")' - '{{ test | map("map","community.general.dict_kv","value") | map("zip",[{"key":"name"},{"key":"address"}]) | map("map","flatten",1) | map("map","combine") }}' - ' test | map("map","community.general.dict_kv","value") | map("zip",[{"key":"name"},{"key":"address"}]) | map("map","flatten",1) | map("map","combine") | map("items2dict")' - '{{ test | map("map","community.general.dict_kv","value") | map("zip",[{"key":"name"},{"key":"address"}]) | map("map","flatten",1) | map("map","combine") | map("items2dict") }}' On 8/29/24 7:38 AM, 'Rowe, Walter P. (Fed)' via Ansible Project wrote: 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) <walter.r...@nist.gov><mailto:walter.r...@nist.gov> 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 <dnmvis...@gmail.com><mailto:dnmvis...@gmail.com> 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 ansible-project+unsubscr...@googlegroups.com<mailto:ansible-project+unsubscr...@googlegroups.com>. 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 ansible-project+unsubscr...@googlegroups.com<mailto:ansible-project+unsubscr...@googlegroups.com>. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/6F5FBEE5-028A-4AB2-ADC9-5B2B535290F7%40nist.gov<https://groups.google.com/d/msgid/ansible-project/6F5FBEE5-028A-4AB2-ADC9-5B2B535290F7%40nist.gov?utm_medium=email&utm_source=footer>. -- Todd -- 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 ansible-project+unsubscr...@googlegroups.com<mailto:ansible-project+unsubscr...@googlegroups.com>. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/0d6ba760-b60c-4749-8fa6-8ccd623c0959%40gmail.com<https://groups.google.com/d/msgid/ansible-project/0d6ba760-b60c-4749-8fa6-8ccd623c0959%40gmail.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 ansible-project+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/22D3870A-F3A0-4A4F-B18D-0D480EB53634%40nist.gov.