python - Ansible - 如何从列表中删除项目?

标签 python ansible jinja2

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

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

我的第二个 list :

"my_list_two": [
  "item3"
]

如何从此列表中删除“item3”以设置新事实?
我尝试使用“-”和联合,但这并没有以预期的最终结果结束。

set_fact: 
  my_list_one: "{{ 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/

相关文章:

python - 如何遍历 Jinja 模板中的字典列表?

loops - Ansible - 使用键列表过滤字典

flask - 创建应用后更改Flask配置

python - 检查 URL 查询的条件

Python ftplib 超时

git - 如何使用 Ansible 查看最近的 git 标签?

Ansible 更新authorized_keys 文件

ansible - 使用 ansible playbook 检查嵌套数据结构中的给定字符串

python - 提取比 numpy 数组大小更大的切片

python - 使用Django添加用户时自动生成用户名