Ansible检查词典列表中是否存在键/值对

ast*_*ade 4 ansible ansible-2.x

我试图检查Ansible中的字典列表中是否存在某个键/值对.

我发现了这个问题,但是我不确定语法是否与python有不同(我在ansible中从未见过if语句!) 检查字典列表中是否已存在值?

我已经尝试过when条件:

  when: '"value" not in list'
Run Code Online (Sandbox Code Playgroud)

但是我没有运气.

例如,列表看起来像:

list: [
   {
   "key1" : "value1",
   "key2" : "value2",
   "key3" : "value3"
   },
   {
   "key1" : "value4",
   "key2" : "value5",
   "key3" : "value6"
   },
   and so on
Run Code Online (Sandbox Code Playgroud)

我试图找出,例如,该对是否"key2":"value5"存在于列表中的任何字典中.希望有一种方法可以做到这一点,如果对存在则给出真,如果不存在则为假?

任何提示将非常感谢!谢谢.

Kon*_*rov 7

干得好:

- hosts: localhost
  gather_facts: no
  vars:
    list_of_dicts: [
     {
     "key1" : "value1",
     "key2" : "value2",
     "key3" : "value3"
     },
     {
     "key1" : "value4",
     "key2" : "value5",
     "key3" : "value3"
     }]
  tasks:
    - debug:
        msg: found
      when: list_of_dicts | selectattr(search_key,'equalto',search_val) | list | count > 0
      vars:
        search_key: key3
        search_val: value3
Run Code Online (Sandbox Code Playgroud)