我想从另一个列表中删除一个项目。

"my_list_one": [
    "item1",
    "item2",
    "item3"
] }

我的第二个 list :
"my_list_two": [
    "item3"
] }

如何从此列表中删除“item3”以设置新事实?
我尝试使用“-”,这:
set_fact: "{{ my_list_one | union(my_list_two) }}"

最终目标:
"my_list_one": [
    "item1",
    "item2"
] }

最佳答案

使用 difference 而不是union:

{{ my_list_one | difference(my_list_two) }}

一个示例剧本(请注意,您还必须为set_fact提供变量名):
---
- hosts: localhost
  connection: local

  vars:
    my_list_one:
      - item1
      - item2
      - item3

    my_list_two:
      - item3

  tasks:
    - set_fact:
        my_list_one: "{{ my_list_one | difference(my_list_two) }}"

    - debug: var=my_list_one

结果(节选):
TASK [debug] *******************************************************************
ok: [localhost] => {
    "my_list_one": [
        "item1",
        "item2"
    ]
}

关于python - Ansible-如何从列表中删除项目?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40927792/

10-08 21:42