← Все вопросы

KeyError при обращении к словарю — что делать?

Задан 21 месяц назад981 просмотров3 ответа
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 перед обращением.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект