辞書型配列はキーと値で対になるようのデータの持ち方をする配列です。
辞書型配列から値を取り出す際はキーを指定する場合が多いです。その際に、指定したキーが配列に含まれていないとエラーになってしまいます。
そういったエラーを回避するためには、配列内のキー情報を事前に確認しておく必要があります。
今回は辞書型配列でキーの存在を確認する方法を紹介します。
使用する配列
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の辞書型配列でキーの存在を確認する方法を紹介しました。辞書型配列から値を取得する際にひと手間加えることでエラーを回避することができます。
キーが存在しない場合の処理も考えてコードを書いてみると、エラーに強いプログラムになりそうですね。
ではでは👋