【Python】辞書型配列に特定のキーの存在を確認する方法

辞書型配列はキーと値で対になるようのデータの持ち方をする配列です。

辞書型配列から値を取り出す際はキーを指定する場合が多いです。その際に、指定したキーが配列に含まれていないとエラーになってしまいます。

そういったエラーを回避するためには、配列内のキー情報を事前に確認しておく必要があります。

今回は辞書型配列でキーの存在を確認する方法を紹介します。

使用する配列

dic = {"A": "dog",
       "B": "cat",
       "C": "fish",
       "D": "camel",
       "F": "panda"}

“A”~”F”がキー、動物の名前が値(value)です。

キーの存在確認

今回紹介するコードは、結果を出力するためprint()で囲っています。

単一のキー(in演算子)

任意のキーが存在するかを確認するには、in演算子を用います。存在する場合にはTrueが、存在しない場合にはFalseが返されます。

print("A" in dic)

# True

print("Z" in dic)
# False

not in を使うと、存在しない場合にTrue、存在するとFalseが返されます。

print("A" not in dic)
# False

print("Z" not in dic)
# True

単一のキー(get())

辞書型配列から値を取り出す際にそのままキーを指定すると、存在しないキーの場合にエラーになってしまいます。

ですが、get()を使うと存在しない場合には任意の値(デフォルトはNone)を返すことができます。

print(dic.get("A"))
# dog


##キーが辞書にないとエラー
print(dic["Z"])
# KeyError: 'Z'

##辞書になくてもエラーにならない
print(dic.get("Z"))
# None

複数のキー(全件一致)

複数のキーの存在を確認する場合は、keys()を用いてキーの存在を確認します。この方法では、指定したキー全てが存在していればTrue、1つでも存在していなければFalseが返されます。

print(dic.keys() >= {"A", "B"})
# True

print(dic.keys() >= {"A", "Z"})
# False

複数のキー(部分一致)

指定したキーのうち、1つでも辞書に存在するキーがあるかを確認するには以下のようにします。

print(len(dic.keys() & {"A", "B"}) > 0)
# True

print(len(dic.keys() & {"A", "Z"}) > 0)
# True

print(len(dic.keys() & {"S", "Z"}) > 0)
# False

2つめは”A”は存在するのでTrue、3つめは”S”も”Z”も存在しないのでFalseとなります。

まとめ

Pythonの辞書型配列でキーの存在を確認する方法を紹介しました。辞書型配列から値を取得する際にひと手間加えることでエラーを回避することができます。

キーが存在しない場合の処理も考えてコードを書いてみると、エラーに強いプログラムになりそうですね。

ではでは👋