← Все вопросы
KeyError при обращении к словарю — что делать?
12
d = {'a': 1, 'b': 2}
print(d['c'])
Получаю KeyError: 'c'. Как обращаться к словарю, чтобы не падало, если ключа может не быть?
3 ответа
19
✓ Принятый ответ — помог автору
d.get('c') вернёт None вместо ошибки.
Ильяс Аминов @ автор: да, второй аргумент — значение по умолчанию · 20 месяцев назад
Max Pogodin а можно дефолт задать: d.get('c', 0) · 20 месяцев назад
9
KeyError означает, что такого ключа в словаре нет. Варианты:
d.get('c') # None, если нет
d.get('c', 0) # своё значение по умолчанию
if 'c' in d: # явная проверка
print(d['c'])
Если по логике ключ обязан быть, а его нет — значит проблема выше: где-то ты его не записал или опечатался в названии ключа (регистр, пробел). d['c'] оставляй там, где отсутствие ключа — это реально ошибка, которую хочешь увидеть.
4
Проверь if key in d перед обращением.
Ваш ответ
Войдите, чтобы ответить на вопрос.