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()

Python