Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Python: Python, KeyError, dictionary, exception handling, hash map

Какое исключение возникает при неправильном ключе словаря?

Вопрос проверяет знание исключений Python, возникающих при попытке доступа к несуществующему ключу словаря, что важно для написания устойчивого к ошибкам кода.

Короткий ответ

При попытке получить значение по ключу, которого нет в словаре, Python генерирует исключение KeyError. Это защищает программу от работы с неопределёнными данными. Для безопасного доступа можно использовать метод get(), который возвращает None или заданное значение по умолчанию. Также можно проверять наличие ключа оператором in перед доступом.

Длинный ответ

В Python словарь (dict) — это структура данных, хранящая пары ключ-значение. Ключи должны быть хешируемыми и уникальными. При попытке получить значение с помощью синтаксиса dict[key], если указанный ключ отсутствует в словаре, интерпретатор немедленно вызывает исключение KeyError. Это поведение является защитным механизмом, предотвращающим неявное использование несуществующих данных, что могло бы привести к трудноотлавливаемым ошибкам в логике программы.

Как обрабатывать KeyError

Существует несколько основных подходов для безопасной работы со словарями:

  • Использование блока try/except для перехвата исключения.
  • Применение метода dict.get(key, default), который возвращает значение по ключу или заданное значение по умолчанию (или None), если ключа нет.
  • Проверка существования ключа с помощью оператора in перед доступом.

Примеры кода

Рассмотрим пример, демонстрирующий проблему и способы её решения:

# Создаём простой словарь
user_data = {"name": "Alice", "age": 30}

# 1. Прямой доступ, вызывающий KeyError
# print(user_data["email"])  # KeyError: 'email'

# 2. Безопасный доступ с помощью try/except
try:
    email = user_data["email"]
except KeyError:
    email = "default@example.com"
print(f"Email (try/except): {email}")

# 3. Использование метода get()
email_get = user_data.get("email", "not provided")
print(f"Email (get): {email_get}")

# 4. Проверка ключа оператором in
if "email" in user_data:
    print(f"Email found: {user_data['email']}")
else:
    print("Email key is missing.")

Метод get() является наиболее идиоматичным и часто используемым способом для случаев, когда отсутствие ключа — ожидаемая ситуация. Блок try/except больше подходит, когда доступ по ключу должен в основном успешно выполняться, а исключение является редким случаем.

Вывод: Исключение KeyError — важный сигнал о некорректной логике доступа к данным. Используйте метод get() или проверку in, когда отсутствие ключа является допустимым сценарием в вашей программе, чтобы сделать код более читаемым и устойчивым к ошибкам.

Уровень

  • Рейтинг:

    3

  • Сложность:

    2

Навыки

  • Python

    Python

Ключевые слова

#Python

#KeyError

#dictionary

#exception handling

#hash map

Подпишись на Python Developer в телеграм