Ситуация: мы пишем программу для зоопарка, в которой учитывается всё — имена, возраст животных, какой они породы и так далее. Чтобы это хранить, мы используем словари. Словарь состоит из пар «ключ — значение». И вот мы подходим к интерактивному фрагменту, когда программа сообщает пользователю, как зовут любимую лошадь в зоопарке:
names = {'кошка': 'Кузя', 'собака': 'Жук', 'мышь': 'Рататуй', 'конь': 'Спирит'}
# дальше идёт остальной код
# который важен для работы программы
# …
# и вот мы возвращаемся к словарю
print('Нашу любимую лошадь зовут ' + names['лошадь'])
Но при запуске код почему-то выдаёт такую ошибку:
❌ KeyError: 'лошадь'
Что это значит: питон взял наш словарь с именами не смог найти в нём ключ «лошадь». А раз что-то не получается сделать, интерпретатор сразу выводит ошибку и сообщает, что проблема в ключе.
Когда встречается: когда мы используем ключ, которого нет в словаре.
Что делать с ошибкой KeyError
Эта ошибка случается по двум причинам:
- Мы используем неправильный ключ, которого нет в словаре.
- Мы перепутали словари и пытаемся использовать ключ от одного словаря в другом.
В обоих случаях для исправления достаточно посмотреть, какие ключи лежат в нужном нам словаре, и использовать именно их.
В нашем коде ошибка такая: у нас есть ключ «конь», но нет ключа «лошадь». Так как править ключ в словаре — это неверный подход (потому что словарь может использоваться и в других местах), нам нужно заменить в команде вывода ключ на верный:
names = {'кошка': 'Кузя', 'собака': 'Жук', 'мышь': 'Рататуй', 'конь': 'Спирит'}
# дальше идёт остальной код
# который тоже важен для работы программы
# …
# и вот мы возвращаемся к словарю
print('Нашу любимую лошадь зовут ' + names['конь'])