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