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の値を取得する方法は

辞書のキーと値の組み合わせの存在を確認: 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
Last Updated: 6/26/2019, 10:34:03 PM