1. ホーム
  2. python

[解決済み] 辞書のリストに値がすでに存在するかどうかをチェックしますか?

2022-04-25 22:47:27

質問

Pythonで以下のような辞書のリストを持っています。

a = [
    {'main_color': 'red', 'second_color':'blue'},
    {'main_color': 'yellow', 'second_color':'green'},
    {'main_color': 'yellow', 'second_color':'blue'},
]

以下のように、特定のキー/値を持つ辞書がすでにリストに存在しているかどうかをチェックしたい。

// is a dict with 'main_color'='red' in the list already?
// if not: add item

解決方法は?

ここで、ひとつの方法を紹介します。

if not any(d['main_color'] == 'red' for d in a):
    # does not exist

括弧の中の部分はジェネレータ式で True は、探しているキーと値のペアを持つ各ディクショナリに対して、そうでない場合は False .


もしキーが見つからない場合は、上記のコードで KeyError . これを修正するには get で、デフォルト値を指定します。を提供しない場合 デフォルト の値を指定します。 None が返される。

if not any(d.get('main_color', default_value) == 'red' for d in a):
    # does not exist