Sobes.tech
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'