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

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

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

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

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

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

❌ KeyError: 'лошадь'

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

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

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

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

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

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

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

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

Текст:

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

Редактор:

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

Художник:

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

Корректор:

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

Вёрстка:

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

Соцсети:

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

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

Всё как на старых приставках.

hard
Правильные цитаты: добавляем первоисточник в ворованный с вашего сайта контент
Правильные цитаты: добавляем первоисточник в ворованный с вашего сайта контент

При вставке все будут видеть, откуда скопирован текст

medium
Собираем змейку на Arduino

Это будет самая необычная змейка, в которую вы играли.

hard
Играем со шрифтами на главной странице
Играем со шрифтами на главной странице

Делаем красивый эффект на случайном фоне

easy
UX-тест простого калькулятора на JavaScript
UX-тест простого калькулятора на JavaScript

Что скажут UX-тестировщики про наш проект

easy
Олды здесь: как сверстать веб-страницу на таблицах
Олды здесь: как сверстать веб-страницу на таблицах

Для этого нужна простая советская...

easy
Чёртовы психи: как добавить снежинок на любой сайт одной строкой

Ну ладно, тремя строками. Это, считай, одна.

medium
Простейший генератор креативного текста

Без нейросетей, регистрации и СМС.

hard
Как добавить интерактивную карту на сайт
Как добавить интерактивную карту на сайт

Задача на три минуты

easy
Адаптируем статью под время суток
Адаптируем статью под время суток

Простая игрушка на JS.

easy
easy