Как сделать пользовательский объект ключом словаря?

Объект может быть ключом словаря, если он хешируемый: хеш стабилен на время использования, а равные объекты имеют одинаковый хеш. Для пользовательского равенства согласуйте __eq__ и __hash__.

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

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

Объект может быть ключом словаря, если он хешируемый: хеш стабилен на время использования, а равные объекты имеют одинаковый хеш. Для пользовательского равенства согласуйте eq и hash.

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

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

Объект может быть ключом словаря, если он хешируемый: хеш стабилен на время использования, а равные объекты имеют одинаковый хеш. Для пользовательского равенства согласуйте eq и hash.

Обычные экземпляры без переопределения равенства используют идентичность. При определении eq Python обычно делает hash недоступным, пока его явно не задать. Удобный вариант для значений — frozen dataclass с хешируемыми полями. Нельзя менять поля, участвующие в хеше, пока объект служит ключом.

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

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

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

Подробнее