如何合并两个列表?

paw*_*318 9 ansible

我有一个任务,它使用with_subelements但对于大列表来说非常慢(尤其是大多数元素都有重复,我不需要为它们多次运行它)。

所以我正在寻找一种以某种方式优化它的方法。我希望从该列表中获取所有唯一元素 -settings在下面的示例中说:

存货:

my_list:
  - { name: foo, settings: ['x', 'y', 'z'] }      
  - { name: bar, settings: ['x', 'y', 'q', 'w'] }
Run Code Online (Sandbox Code Playgroud)

任务:

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

- name: show results
  debug:
    var=all_settings
Run Code Online (Sandbox Code Playgroud)

结果:

"var": {
        "all_settings": [
            [
                "x",
                "y",
                "z"
            ],
            [
                "x",
                "y",
                "q"
                "w"
            ]
        ]
    }
Run Code Online (Sandbox Code Playgroud)

我卡在了这一点上。如何将这些列表组合在一起?

我正在寻找获得 ['x', 'y', 'z', 'q', 'w']

Mic*_*ton 8

您需要使用一个union.

在我的头顶:

all_settings="{{ foo|map(attribute='settings')|union(bar|map(attribute='settings')) }}"
Run Code Online (Sandbox Code Playgroud)