Como combinar duas listas?

5

Eu tenho uma tarefa que usa with_subelements , mas é terrivelmente lenta para uma lista grande (especialmente que a maioria dos elementos tem duplicatas e eu não preciso executá-lo várias vezes para eles).

Então, estou procurando uma maneira de otimizá-lo de alguma forma. Desejo obter todos os elementos exclusivos dessa lista - digamos settings no exemplo abaixo:

inventário:

my_list:
  - { name: foo, settings: ['x', 'y', 'z'] }      
  - { name: bar, settings: ['x', 'y', 'q', 'w'] }

tarefas:

- name: get all settings
  set_fact:
    all_settings="{{ my_list|map(attribute='settings')|list }}"

- name: show results
  debug:
    var=all_settings

resultados:

"var": {
        "all_settings": [
            [
                "x",
                "y",
                "z"
            ],
            [
                "x",
                "y",
                "q"
                "w"
            ]
        ]
    }

Eu fiquei preso neste ponto. Como posso combinar essa lista?

Estou procurando uma maneira de obter ['x', 'y', 'z', 'q', 'w']

    
por pawel7318 17.11.2015 / 16:15

1 resposta

3

Você precisa usar union .

Fora do topo da minha cabeça:

all_settings="{{ foo|map(attribute='settings')|union(bar|map(attribute='settings')) }}"
    
por 17.11.2015 / 16:53

Tags