Ключ словаря Python должен быть хешируемым, а список изменяем и не поддерживает hash. Изменение ключа нарушило бы поиск в хеш-таблице.
Почему список нельзя использовать в качестве ключа словаря?
Ключ словаря Python должен быть хешируемым, а список изменяем и не поддерживает hash. Изменение ключа нарушило бы поиск в хеш-таблице.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Ключ словаря Python должен быть хешируемым, а список изменяем и не поддерживает hash. Изменение ключа нарушило бы поиск в хеш-таблице.
Словарь использует хеш и сравнение равенства, чтобы находить запись. Для корректного ключа хеш должен оставаться стабильным на протяжении его использования, а равные ключи обязаны иметь одинаковые хеши.
Вместо списка можно использовать tuple, если все его элементы хешируемы, или frozenset, если порядок не важен. Кортеж, содержащий список, тоже не подходит. Неизменяемость контейнера сама по себе не гарантирует хешируемость его содержимого.