2017-07-06 4 views
0

特定のキーと値のペアが存在するかどうかをチェックしようとしています。 辞書のリストにキーと値のペアが存在するかどうかのチェック

私は構文がansibleへのpython異なる場合が私はわからない、この質問を見つけた私はすでに時に条件試してみました Check if value already exists within list of dictionaries?

(私はansibleでif文を見たことがない!):

when: '"value" not in list' 

しかし、私はそれに幸運がありませんでした。

例えば、リストは以下のようになります:

list: [ 
    { 
    "key1" : "value1", 
    "key2" : "value2", 
    "key3" : "value3" 
    }, 
    { 
    "key1" : "value4", 
    "key2" : "value5", 
    "key3" : "value6" 
    }, 
    and so on 

そして、私はペア"key2":"value5"は、リスト内の辞書のいずれかの内に存在するかどうか、例えば、見つけるためにしようとしています。うまくいけば、これを行う方法があります。ペアが存在する場合は真になり、そうでない場合は偽です。

ヒントをお聞かせください。ありがとう。

+0

は、例えば、データを与える: 'list'と何をテストするものです。 –

+0

例を掲載するために投稿を更新しました。 – astrade

答えて

3

ここに行く:

- 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 
+0

[equalto](http://jinja.pocoo.org/docs/2.9/templates/#equalto)はJinja2 2.8以来利用可能ですので、あなたのシステムには少し混乱があります。 pip/systemパッケージをチェックし、AnsibleがJinja2> = 2.8を使用していることを確認します。 –

+0

それは今、感謝しています!私はジンジャーのアップグレードが最近で、サーバーが再起動が必要だったと思う。ご協力いただきありがとうございます。 – astrade

関連する問題