adding a new property in ansible list of dict

Viewed 21

I wish to add a new property to an existing list of dict. And I came up with this. Can it be significantly simplified? thanks

---
- name: test
  hosts:
    - localhost

  vars:
    orig: [ {"name": "albert"}, {"name": "bob"} ]
    gender: { "gender": "male" }

  tasks:
    - name: create a new list
      set_fact:
        modified: []

    - name: add gender
      set_fact:
        modified: "{{ modified + [( item | combine(gender))]}}"
      with_items: "{{ orig }}"

    - name: debug
      debug:
        msg: "{{ modified }}"
1 Answers

Instead of the iteration map the filter combine. For example

    - set_fact:
        modified: "{{ orig|map('combine', gender)|list }}"

gives

    "modified": [
        {
            "gender": "male",
            "name": "albert"
        },
        {
            "gender": "male",
            "name": "bob"
        }
    ]
Related