Обработка исключения KeyError в словаре (dict) в Python
avatar
7 | (offline)
❤️‍🔥Notehunter Developer
Добавлено:
Категория: Руководства «Python»
Комментариев: 0

Исключение KeyError в Python возникает тогда, когда мы пытаемся получить несуществующий ключ из словаря.

Давайте рассмотрим пример получения данной ошибки:

person_dict = {
    'name': 'Vladislav',
    'age': 23
}

print(person_dict['name'])

# Получаем ошибку

print(person_dict['salary'])

Результат:

>>> Vladislav

>>> Traceback (most recent call last):
>>>   File "C:\Users\Razilator\Desktop\Projects\Coding\articles\keyerror\main.py", line 10, in <module>
>>>     print(person_dict['salary'])
>>> KeyError: 'salary'

Пояснение:

  • В первом случае мы получаем значение по существующему ключу.
  • Во втором случае имитируем получение ключа по несуществующему ключу.

Как такую ошибку обработать?

Первый вариант, это использование блок try/except 

person_dict = {
    'name': 'Vladislav',
    'age': 23
}

try:
    print(person_dict['name'])
    # Получаем ошибку
    print(person_dict['salary'])
except KeyError as ex:
    print(f'Данного ключа не существует: {ex}')

Результат после обработки:

>>> Vladislav
>>> Данного ключа не существует: 'salary'

Но как избежать ошибку KeyError при получении несуществующего ключа из словаря?

Мы можем избежать ошибки KeyError, используя функцию get() для доступа к значению ключа. Если ключ отсутствует, возвращается None. Мы также можем указать значение по умолчанию, которое будет возвращено, если ключ отсутствует.

Рассмотрим пример:

person_dict = {
    'name': 'Vladislav',
    'age': 23
}

print(person_dict.get('name'), person_dict.get('age'), person_dict.get('salary', 120000), person_dict.get('job'))

Результат:

>>> Vladislav 23 120000 None

Заключение

Таким образом, с помощью try/except, либо с помощью функции get() вы можете обойти ошибку KeyError извлекая несуществующий ключ из словаря.

Теги записи: Python, Основы Python, KeyError, dict(),
Комментарии к статье 0
Комментариев нет
Форма добавления комментария (необходима регистрация)