Какие объекты в Python могут быть ключами словаря?

Ключ словаря должен быть хешируемым: иметь стабильный hash и согласованное сравнение равенства. Равные ключи обязаны иметь одинаковый hash.

Короткий ответ

Что ответить на собеседовании

Ключ словаря должен быть хешируемым: иметь стабильный hash и согласованное сравнение равенства. Равные ключи обязаны иметь одинаковый hash.

Подробный разбор

Ответ с пояснениями

Ключ словаря должен быть хешируемым: иметь стабильный hash и согласованное сравнение равенства. Равные ключи обязаны иметь одинаковый hash.

Частые ключи — строки, числа, None, а также кортежи и frozenset, если их элементы хешируемы. Список, dict и set по умолчанию ключами быть не могут.

Неизменяемость и хешируемость связаны, но не тождественны: пользовательский изменяемый объект может иметь identity-based hash. Опасно менять поля, участвующие в __hash__/__eq__, после вставки. Переопределение __eq__ без подходящего __hash__ обычно делает экземпляры нехешируемыми. Коллизии допустимы: словарь дополнительно сравнивает ключи.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее