note.nkmk.me

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

Date: 2018-04-13 / tags: Python, 辞書
このエントリーをはてなブックマークに追加
スポンサーリンク

辞書に存在しないキーの値を取得しようとすると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が返る。

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

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

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

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

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

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

print(d)
# {'key1': 'val1', 'key2': 'val2', 'key3': 'val3', 'key4': 'val4'}
source: dict_get.py
スポンサーリンク
シェア
このエントリーをはてなブックマークに追加

関連カテゴリー

関連記事