Python: ディクショナリのキーや値を検索(存在を確認)する
Pythonのディクショナリ内に、 指定した「キー」や「要素値」が存在するかどうかを検索(確認)したい場合は、 in演算子を使います。
キーを検索する場合は「キー in ディクショナリ」で、 要素値を検索する場合は「要素値 in ディクショナリ.values()」と記述します。 それぞれを順番に説明します。
キーを検索
キーを検索(確認)する場合はin演算子を使って次のように記述します。
キー in ディクショナリ キー in ディクショナリ.keys()
指定したキーが存在する場合は True、 存在しない場合は False が戻ります。 「ディクショナリ」だけの場合も「ディクショナリ.keys()」と 記述した場合もどちらもキーを検索するので結果は同じです。
in演算子だけでなく「not in演算子」も使えます。 その場合戻り値は逆になります。
d = {"a": 10, "b": 20, "c": 30} print("a" in d) # True print("x" in d) # False print("a" not in d) # False print("x" not in d) # True
要素を削除する場合の処理
次のコードでは、 in演算子、if文、del文を使ってキー「"c"」の要素を削除しています。
d = {"a": 10, "b": 20, "c": 30} if "c" in d: del d["c"] else: #存在しない場合 print(False)
「ディクショナリ[キー]」で要素を取得する場合や、
「del ディクショナリ[キー]」で要素を削除する場合は、
存在しないキーを指定するとエラー「KeyError」が発生します。
エラーを防ぐには上で記述したような方法で、
キーの存在を事前に確認する必要があります。
関連記事: ディクショナリのすべてのキーを取得する keys()
要素値を検索 values()
「要素値」を検索する場合は、 in演算子とディクショナリのvalues()メソッドを使います。 values()メソッドは要素値をまとめたdict_valuesオブジェクトの値を戻します。
値 in ディクショナリ.values()
値が存在する場合は True、
存在しない場合は False が戻ります。
in演算子だけでなく「not in演算子」も使えます。
その場合戻り値は逆になります。
d = {"a": 10, "b": 20, "c": 30} print(d.values()) # dict_values([10, 20, 30]) print(10 in d.values()) # True print(50 in d.values()) # False print(10 not in d.values()) # False print(50 not in d.values()) # True
次のコードでは in演算子と if文を使って、 値が存在する場合と存在しない場合で処理を分岐させています。
d = {"a": 10, "b": 20, "c": 30} num = 20 if num in d.values(): print("存在します") else: print("存在しません")
関連記事: ディクショナリのすべての値を取得する values()