Back to questions
Junior — Middle
60
Почему в Python нельзя использовать любой тип данных в качестве ключа словаря?
Answer from AI
sobes.tech AI
В Python ключом словаря может быть только хешируемый (immutable) объект. Это связано с тем, что словарь реализован как хеш-таблица, и для быстрого поиска ключа используется его хеш.
Если объект изменяемый (например, список или словарь), его хеш может измениться во времени, что нарушит целостность структуры данных и приведет к ошибкам.
Поэтому ключи должны быть:
- Неизменяемыми (например, строки, числа, кортежи из неизменяемых элементов).
- Иметь реализованный метод
__hash__и__eq__, чтобы корректно сравниваться и индексироваться.
Пример:
# Корректно
my_dict = {('a', 1): 'value'}
# Ошибка
my_dict = {[1, 2]: 'value'} # TypeError: unhashable type: 'list'