Словарь: создание и базовые операции
Уроки курсаСловарь: создание и базовые операции
Чтение значений: d[key] и KeyError
Чтобы получить значение из словаря, используют квадратные скобки — тот же синтаксис, что и у списков, только вместо числового индекса пишут ключ:
person = {'name': 'Анна', 'age': 25, 'city': 'Москва'}
print(person['name']) # Анна
print(person['age']) # 25
Python находит ключ в словаре и возвращает связанное с ним значение. Порядок поиска не зависит от размера словаря — доступ по ключу работает быстро вне зависимости от того, сколько пар в словаре.
Когда возникает KeyError. Если написать ключ, которого в словаре нет, Python выбросит исключение KeyError:
print(person['phone']) # KeyError: 'phone'
Сообщение об ошибке содержит имя отсутствующего ключа — это удобно для отладки. KeyError не означает, что со словарём что-то сломалось; это просто сигнал: «такого ключа здесь нет».
Важно понять, что Python не возвращает None и не пропускает ошибку молча — он останавливает выполнение программы. Это поведение намеренное: лучше упасть с понятным сообщением, чем продолжить работу с None там, где ожидалось реальное значение.
Как проверить ключ до обращения. Один из способов избежать KeyError — сначала убедиться, что ключ существует, с помощью оператора in:
if 'phone' in person:
print(person['phone'])
else:
print('Телефон не указан')
Оператор in для словаря проверяет именно ключи, а не значения. Выражение 'Анна' in person вернёт False, потому что 'Анна' — это значение, а не ключ.
Проверка через in перед d[key] работает, но требует двух строк. В следующей секции разберём метод get(), который решает ту же задачу компактнее.
