Ошибка ключа словаря Python — руководства по Python

В этом уроке по Python мы изучим Как решить ошибки ключа словаря Python используя некоторые примеры в Python. Кроме того, мы также рассмотрим, почему Python KeyError возникает, когда ключ существует, и как избежать KeyErrors.
Что такое KeyError в словаре Python?
А KeyError
в Python возникает, когда к словарю обращаются с ключом, который не существует в этом словаре. Рассмотрим следующий пример:
dictionary = {"name": "John", "age": 25}
print(dictionary["profession"])
В приведенном выше фрагменте кода при попытке распечатать dictionary["profession"]
приводит к KeyError
потому что ключ «профессия» не существует в словаре.

Почему возникает KeyError, когда ключ существует?
Несмотря на существующий в словаре ключ, KeyError
еще может возникнуть по разным причинам:
- Чувствительность к регистру: Python — это язык, чувствительный к регистру. Поэтому, ‘Ключ’ и ‘ключ’ разные. Если ваш словарь содержит ключ “Ключ” и вы пытаетесь получить к нему доступ с помощью “ключ”а
KeyError
будет брошен. - Ведущие или конечные пробелы: Если ваш ключ словаря включает начальные или конечные пробелы, например, ‘ ключ‘, и вы попытаетесь получить к нему доступ, не включая эти пробелы, это приведет к
KeyError
. - Неверный тип данных: Тип данных ключа также имеет значение. Например, целое число 1 не совпадает со строкой ‘1’. Если ваш ключ словаря является целым числом, и вы пытаетесь получить к нему доступ с помощью строки (или наоборот), это вызовет
KeyError
.
Как избежать ключевых ошибок в словаре Python
Проверить, существует ли ключ
Вы можете проверить, существует ли ключ в словаре, прежде чем обращаться к нему:
state_info = {
"State": "California",
"Capital": "Sacramento",
"Region": "West"
}
key_to_check = "State"
if key_to_check in state_info:
print(state_info[key_to_check])
else:
print(f"Key '{key_to_check}' does not exist in the dictionary.")
В этом коде мы сначала проверяем, key_to_check
существует в словаре Python state_info
используя in
оператор. Если это так, мы печатаем связанное с ним значение. Если это не так, мы печатаем сообщение о том, что ключ не существует.
Выход:

Использовать get()
Метод
Python предоставляет get()
метод, возвращающий значение ключа, если он существует в словаре. Если ключ не существует, он возвращает значение по умолчанию:
car_info = {
"Make": "Ford",
"Model": "Mustang",
"Year": 2018
}
key_to_check = "Engine"
print(car_info.get(key_to_check, "Key does not exist in the dictionary."))
Здесь мы пытаемся получить доступ к значению ключа “Двигатель” используя get()
метод. С “Двигатель” не существует в car_info
, get()
метод возвращает предоставленное значение по умолчанию, «Ключ не существует в словаре».
Выход:

Использовать dict.setdefault()
setdefault()
метод возвращает значение ключа (если ключ находится в словаре). Если нет, он вставляет ключ со значением в словарь Python.
book_info = {
"Title": "To Kill a Mockingbird",
"Author": "Harper Lee",
"Publication Year": 1960
}
key_to_check = "Pages"
value = book_info.setdefault(key_to_check, "Unknown")
print(value)
print(book_info)
С «Страницы» не существует в book_info
, setdefault()
вставки «Страницы» со значением “Неизвестный” в словарь, а затем возвращает «Неизвестный”. book_info
Словарь Python теперь включает новую пару ключ-значение «Страницы»: «Неизвестно».
Выход:

Обработка KeyError с помощью обработки исключений
В Python вы можете использовать блок try-except для перехвата исключений и обработки ошибок. Это также применимо для KeyError
.
team_info = {
"Team Name": "Los Angeles Lakers",
"Founded": 1947,
"Championships": 17
}
key_to_check = "League"
try:
print(team_info[key_to_check])
except KeyError:
print(f"Key '{key_to_check}' does not exist in the dictionary.")
В этом случае мы пытаемся вывести значение «Лига» от team_info
. Потому что ключ «Лига» не существует, а KeyError
был бы повышен. Но из-за блока try-except Python выполняет блок exclude, выводя сообщение о том, что ключ не существует.
Выход:

Заключение
В то время как KeyError
обычно указывает на то, что указанный ключ не существует в словаре, иногда его можно вызвать, даже если ключ кажется существующим по таким причинам, как чувствительность к регистру, начальные или конечные пробелы и неправильный тип данных.
Несколько методов, таких как использование условных проверок, get()
, setdefault()
и обработка исключений могут использоваться для предотвращения этой ошибки. Понимание этих ловушек и решений может помочь написать более надежный и безошибочный код Python.
Вы также можете проверить следующие учебные пособия по Python.

Я Биджай Кумар, Microsoft MVP в SharePoint. Помимо SharePoint, последние 5 лет я начал работать над Python, машинным обучением и искусственным интеллектом. За это время я приобрел опыт работы с различными библиотеками Python, такими как Tkinter, Pandas, NumPy, Turtle, Django, Matplotlib, Tensorflow, Scipy, Scikit-Learn и т. д. для различных клиентов в США, Канаде, Великобритании, Австралии, Новая Зеландия и т. д. Проверьте мой профиль.
Ссылка на источник