Ключом может быть хешируемый объект с согласованными hash и eq. Обычно это числа, строки, bytes, frozenset и кортежи из хешируемых элементов, но не list, dict или set.
Словарь — изменяемый тип. Какие типы данных мы можем использовать в качестве ключа словаря?
Ключом может быть хешируемый объект с согласованными __hash__ и __eq__. Обычно это числа, строки, bytes, frozenset и кортежи из хешируемых элементов, но не list, dict или set.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Ключом может быть хешируемый объект с согласованными hash и eq. Обычно это числа, строки, bytes, frozenset и кортежи из хешируемых элементов, но не list, dict или set.
Неизменяемость — полезный ориентир, но точное требование именно хешируемость. Кортеж со списком внутри не подходит. Пользовательский класс может быть хешируемым, однако нельзя менять состояние, влияющее на его хеш и равенство, пока объект используется ключом. Равные значения, например 1 и True, обращаются к одной записи словаря, даже если их типы различаются.