Ansible:根据属性条件获取字典的子列表

Ansible: get sublist of dictionaries based on attribute condition

我有这个字典列表:

some_list:
  - name: alfa
    dir: aaa
  - name: beta
    dir: bbb
  - name: gamma
    dir: ggg

我想通过 Ansible/Jinja 得到 some_list 的一个子集,它应该仍然是一个列表,它只包含具有 name in ['alfa', 'beta'].

的字典

我将在 with_items 中使用子列表。

您可以使用 selectattr filter along with the in 测试。

鉴于:

- debug:
    var: some_list | selectattr('name', 'in', ['alfa', 'beta'])

这将产生:

TASK [debug] ******************************************************************
ok: [localhost] => 
  some_list | selectattr('name', 'in', ['alfa', 'beta']):
  - dir: aaa
    name: alfa
  - dir: bbb
    name: beta