d = {{1: 2}: "value"}
Вопрос касается того, почему следующий код вызовет ошибку `TypeError: unhashable type: 'dict'` в Python:
d = {{1: 2}: "value"}
Причина ошибки:
Ключи словаря в Python должны быть hashable (хешируемыми). Объекты, которые хешируются, должны быть неизменяемыми (immutable). Это необходимо для эффективной работы словаря, так как хеш ключа используется для быстрого поиска значения.
Словарь (dict
) является изменяемым (mutable) типом данных. Это значит, что его можно изменять после создания (добавлять, удалять, изменять элементы). Из-за этой изменяемости словарь не является хешируемым и не может быть использован в качестве ключа другого словаря или элемента множества (set
).
В примере выше, {1: 2}
является словарем. Попытка использовать его в качестве ключа другого словаря (d
) приводит к ошибке `TypeError`, потому что словарь не является хешируемым.
Как исправить:
Чтобы исправить ошибку, необходимо использовать неизменяемый тип данных в качестве ключа. Обычно это делается с помощью:
Пример исправления (использование кортежа):
d = {(1, 2): "value"} # Теперь ключ - кортеж (1, 2)
print(d[(1, 2)]) # Выведет "value"
В данном примере, кортеж (1, 2)
может выступать в качестве ключа, так как является неизменяемым.