Pythonで辞書のキー・値の存在を確認、取得(検索)
Pythonで、辞書(dict
型オブジェクト)に特定のキーkey
、値value
が含まれているかを判定する方法、および、その値を取得する方法を説明する。
in
演算子と辞書オブジェクトのvalues()
, items()
メソッドを使う。
- キー
key
の存在を確認、取得(検索):in
演算子 - 値
value
の存在を確認、取得(検索):in
演算子,values()
- キー
key
と値value
の組み合わせの存在を確認:in
演算子,items()
values()
, items()
メソッドは辞書のforループ処理でも有用。以下の記事を参照。
辞書のキー(key)の存在を確認、取得(検索): in演算子
辞書オブジェクトに対してin
を使うとキーの存在確認になる。存在しないことの確認にはnot in
を使う。
d = {'key1': 'val1', 'key2': 'val2', 'key3': 'val3'}
print('key1' in d)
# True
print('val1' in d)
# False
print('key4' not in d)
# True
辞書オブジェクトそのままではなくkeys()
メソッドを使っても同じ。上の例の場合はd.keys()
としても同じ結果となる。キーに対する確認であることを明示的に表したい場合はkeys()
を使う。
なお、Python2ではhas_key()
というメソッドがあったがPython3では削除されている。
キーkey
に対する値value
を取得するには辞書オブジェクト[キー]
とする。
print(d['key1'])
# val1
辞書オブジェクト[キー]
という書き方ではキーが存在しないときにエラーとなるが、get()
メソッドを使うとキーが存在しない場合に任意の値(デフォルトはNone
)を返すようにできる。
# print(d['key4'])
# KeyError: 'key4'
print(d.get('key4'))
# None
get()
メソッドについての詳細は以下の記事を参照。
また、辞書オブジェクト[キー] = 新しい値
とすると新たな要素が追加できるが、既存のキーに対しては値が上書きされる。既存のキーに対しては値を変更せず、新規のキーに対してのみ新たな値で要素を追加したい場合はsetdefault()
メソッドを使う。以下の記事を参照。
辞書の値(value)の存在を確認、取得(検索): in演算子, values()
辞書オブジェクトに特定の値value
が含まれているかどうかを判定するには、辞書のすべての値value
をビューオブジェクトで返すvalues()
メソッドに対してin
を使う。存在しないことの確認はnot in
。
print('val1' in d.values())
# True
print('val4' not in d.values())
# True
値value
からキーkey
の値を取得する方法は以下の記事を参照。
- 関連記事: Pythonで辞書の値からキーを抽出
辞書のキーと値の組み合わせの存在を確認: in演算子, items()
辞書オブジェクトに特定のキーkey
と値value
の組み合わせが含まれているかどうかを判定するには、すべてのキーと値のタプル(key, value)
をビューオブジェクトで返すitems()
メソッドに対してin
を使う。
キーkey
と値value
の組み合わせが一致したときのみTrue
となる。
存在しないことの確認はnot in
。
print(('key1', 'val1') in d.items())
# True
print(('key1', 'val2') in d.items())
# False
print(('key1', 'val2') not in d.items())
# True