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

Modified: | Tags: Python, 辞書

Pythonの辞書(dict型オブジェクト)で、キーkeyから値valueを取得する方法を説明する。

反対に、値valueからキーkeyを取得したい場合は以下の記事を参照。

辞書のすべての値valueをリストとして取得するには、list()と辞書のvalues()メソッドを使う。

d = {'key1': 1, 'key2': 2, 'key3': 3}

print(list(d.values()))
# [1, 2, 3]

辞書に存在しないキーを[]で指定するとKeyError

Pythonの辞書(dict型オブジェクト)では辞書オブジェクト[キー]でキーkeyの値valueを取得できる。

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

print(d['key1'])
# val1
source: dict_get.py

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

# print(d['key4'])
# KeyError: 'key4'
source: dict_get.py

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

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

辞書への要素の追加についての詳細は以下の記事を参照。

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

get()メソッドを使ってキーが存在しない場合はデフォルト値を取得

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

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

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

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

print(d.get('key4'))
# None
source: dict_get.py

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

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

print(d.get('key4', 100))
# 100
source: dict_get.py

元の辞書自体は変更されない。

print(d)
# {'key1': 'val1', 'key2': 'val2', 'key3': 'val3'}
source: dict_get.py

関連カテゴリー

関連記事