Какой тип данных не может быть ключом в словаре?

Ключ словаря Python должен быть хешируемым: list, dict и set не подходят. Tuple допустим только тогда, когда хешируемы все его элементы.

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

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

Ключ словаря Python должен быть хешируемым: list, dict и set не подходят. Tuple допустим только тогда, когда хешируемы все его элементы.

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

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

Ключ словаря Python должен быть хешируемым: list, dict и set не подходят. Tuple допустим только тогда, когда хешируемы все его элементы.

Например, {(1, 2): "ok"} корректен, а {(1, []): "bad"} вызовет TypeError. Важна не просто бытовая неизменяемость объекта, а согласованность hash и eq и стабильность хеша, пока ключ хранится в словаре. Пользовательский объект может быть изменяемым и хешируемым, но изменение полей, участвующих в равенстве и хеше, нарушит поиск. Для множества как ключа обычно используют frozenset, если его элементы тоже хешируемы.

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

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

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

Подробнее