Python3 - 辞書(マッピング型)にない値を取得しようとすると KeyError が発生する

辞書からエラーを発生させずに値を取得するには get 関数を使用するか、in 演算子でキー値の存在確認を行います。

エラーの発生する例

# 辞書(マップ)の生成
testDict = {
    '100': 'Data100',
    '200': 'Data200',
    '300': 'Data300',
}

# 例外発生
# KeyError: '101'
data = testDict['101']
KeyError

対処方法1 get 関数を使用

get 関数は 対象のキー値が無い場合に 「None」 または、「デフォルト値」 を返します。

get の使用方法

取得結果(キー値がない場合、None) = 辞書オブジェクト.get(対象のキー値)
取得結果(キー値がない場合、デフォルト値) = 辞書オブジェクト.get(対象のキー値, デフォルト値)

サンプルコード

# 辞書(マップ)の生成
testDict = {
    '100': 'Data100',
    '200': 'Data200',
    '300': 'Data300',
}

# get で値を取得(デフォルト値は省略)
# 結果 = None
data = testDict.get('101')
print(data)


# get で値を取得(デフォルト値を指定)
# 結果 = 'ありません'
data = testDict.get('101', 'ありません')
print(data)

対処方法2 in 演算子で キー値があるか確認

in 演算子 は 対象のキーが存在する場合は True, 存在しない場合は False を返します。

in 演算子 の使用方法

結果(true: あり false: なし) = 調べたい値 in 辞書オブジェクト
サンプルコード
# 辞書(マップ)の生成
testDict = {
    '100': 'Data100',
    '200': 'Data200',
    '300': 'Data300',
}

# 結果 = 'ありません'
if '101' in testDict:
    data = testDict['101']
    print(data)
else:
    print('ありません')

検証環境

関連ページ