Что означает ошибка KeyError
easy

Что означает ошибка KeyError

Это значит, что используется несуществующий ключ словаря

Ситуация: мы пишем программу для зоопарка, в которой учитывается всё — имена, возраст животных, какой они породы и так далее. Чтобы это хранить, мы используем словари. Словарь состоит из пар «ключ — значение». И вот мы подходим к интерактивному фрагменту, когда программа сообщает пользователю, как зовут любимую лошадь в зоопарке:

names = {'кошка': 'Кузя', 'собака': 'Жук', 'мышь': 'Рататуй', 'конь': 'Спирит'}
# дальше идёт остальной код
# который важен для работы программы
# … 
# и вот мы возвращаемся к словарю
print('Нашу любимую лошадь зовут ' + names['лошадь'])

Но при запуске код почему-то выдаёт такую ошибку:

❌ KeyError: 'лошадь'

Что это значит: питон взял наш словарь с именами не смог найти в нём ключ «лошадь». А раз что-то не получается сделать, интерпретатор сразу выводит ошибку и сообщает, что проблема в ключе.

Когда встречается: когда мы используем ключ, которого нет в словаре. 

Что делать с ошибкой KeyError

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

  1. Мы используем неправильный ключ, которого нет в словаре.
  2. Мы перепутали словари и пытаемся использовать ключ от одного словаря в другом.

В обоих случаях для исправления достаточно посмотреть, какие ключи лежат в нужном нам словаре, и использовать именно их. 

В нашем коде ошибка такая: у нас есть ключ «конь», но нет ключа «лошадь». Так как править ключ в словаре — это неверный подход (потому что словарь может использоваться и в других местах), нам нужно заменить в команде вывода ключ на верный:

names = {'кошка': 'Кузя', 'собака': 'Жук', 'мышь': 'Рататуй', 'конь': 'Спирит'}
# дальше идёт остальной код
# который тоже важен для работы программы
# … 
# и вот мы возвращаемся к словарю
print('Нашу любимую лошадь зовут ' + names['конь'])

Текст:

Михаил Полянин

Редактор:

Максим Ильяхов

Художник:

Даня Берковский

Корректор:

Ирина Михеева

Вёрстка:

Кирилл Климентьев

Соцсети:

Алина Грызлова

Любишь Python? Зарабатывай на нём!
Изучите самый модный язык программирования и станьте крутым бэкенд-разработчиком. Старт — бесплатно.
Попробовать бесплатно
Любишь Python? Зарабатывай на нём! Любишь Python? Зарабатывай на нём! Любишь Python? Зарабатывай на нём! Любишь Python? Зарабатывай на нём!
Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Начать карьеру в ИТ
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Еще по теме
easy