dict(dictionary・ディクショナリ―・辞書・マッピング型)からエラーを発生させずに値を取得するには get 関数を使用するか、in 演算子でキー値の存在確認を行います。
エラーの発生する例
# 辞書(dict)の生成
testDict = {
'100': 'Data100',
'200': 'Data200',
'300': 'Data300',
}
# 例外発生
# KeyError: '101'
data = testDict['101']
- 10行目: '101' が testDict に存在しないため、KeyError が発生します。

対処方法1 get 関数を使用
get 関数は 対象のキー値が無い場合に 「None」 または、「デフォルト値」 を返します。get の使用方法
取得結果(キー値がない場合、None) = 辞書オブジェクト.get(対象のキー値)
取得結果(キー値がない場合、デフォルト値) = 辞書オブジェクト.get(対象のキー値, デフォルト値)
サンプルコード
# 辞書(dict)の生成
testDict = {
'100': 'Data100',
'200': 'Data200',
'300': 'Data300',
}
# get で値を取得(デフォルト値は省略)
# 結果 = None
data = testDict.get('101')
print(data)
# get で値を取得(デフォルト値を指定)
# 結果 = 'ありません'
data = testDict.get('101', 'ありません')
print(data)
- 10行目: '101' が testDict に存在しないため、None が返されます。KeyError は発生しません。
- 16行目: デフォルト値が指定されているため、None ではなく 'ありません' が返されます。
対処方法2 in 演算子で キー値があるか確認
in 演算子 は 対象のキーが存在する場合は True, 存在しない場合は False を返します。in 演算子 の使用方法
結果(true: あり false: なし) = 調べたい値 in 辞書オブジェクト
# 辞書(dict)の生成
testDict = {
'100': 'Data100',
'200': 'Data200',
'300': 'Data300',
}
# 結果 = 'ありません'
if '101' in testDict:
data = testDict['101']
print(data)
else:
print('ありません')
- 9行目: '101' が testDict に存在しないため、else区の print('ありません') が実行されます。
検証環境
- Python 3.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:34:40) [MSC v.1927 64 bit (AMD64)] on win32
- Microsoft Windows 10 Pro Version 20H2 OS Build 19042.870 Experience: Windows Feature Experience Pack 120.2212.551.0