Pythonの辞書のgetメソッドでキーから値を取得(存在しないキーでもOK)

辞書に存在しないキーの値を取得しようとするとKeyError例外 Pythonの辞書(dict型オブジェクト)では辞書オブジェクト[キー]でキーkeyの値valueを取得できます。

d = {'key1': 'val1', 'key2': 'val2', 'key3': 'val3'}

print(d['key1'])
# val1

この書き方だと、キーkeyが存在しない(含まれていない)場合にエラー(KeyError例外)が発生してしまいます。

# print(d['key4'])
# KeyError: 'key4'

なお、値の取得ではなく追加の場合は存在しないキーを指定しても問題はない。新たなキーとして追加されます。

d['key4'] = 'val4'
print(d)
# {'key1': 'val1', 'key2': 'val2', 'key3': 'val3', 'key4': 'val4'}

辞書への要素の追加についての詳細は

また、辞書に特定のキーが存在しているかどうかを判定するにはinを使います。

getメソッドを使ってキーが存在しない場合はデフォルト値を取得 辞書オブジェクトのget()メソッドを使うと、キーが存在しない場合にエラーを発生させずに任意の値(デフォルト値)を取得できます。

  1. 組み込み型 dict.get() — Python 3.6.5 ドキュメント

第一引数にキーを指定します。キーが存在する場合は対応する値valueが返り、キーが存在しない場合はNoneが返ってきます。

print(d.get('key1'))
# val1

print(d.get('key5'))
# None

None以外の値を返したい場合は、第二引数にキーが存在しない場合に返すデフォルト値を指定します。

print(d.get('key5', 'NO KEY'))
# NO KEY

print(d.get('key5', 100))
# 100

元の辞書自体は変更されません。

print(d)
# {'key1': 'val1', 'key2': 'val2', 'key3': 'val3', 'key4': 'val4'}
Last Updated: 6/26/2019, 10:34:03 PM