Я имею в виду, почему наклон мы помещаем ключ dict как dict?
это означает, что у нас не может быть словаря, имеющего ключ как другой словарь...
Короткий ответ: потому что это mutable контейнеры .
Если бы диктат был хэширован, его хэш изменился бы по мере изменения содержимого.
.В Python ни один из типов мутируемых контейнеров не является хэшируемым , потому что они мутируемы и, следовательно, их хэш-значение может изменяться в течение жизни.
Как говорили другие, хэш-значение диктата меняется по мере изменения содержимого.
Однако, если вам действительно нужно использовать диктаты в качестве ключей, вы можете использовать подкласс диктата, чтобы сделать хэш-версию.
>>> class hashabledict(dict):
... def __hash__(self):
... return id(self)
...
>>> hd = hashabledict()
>>> d = dict()
>>> d[hd] = "foo"
>>> d
{{}: 'foo'}
>>> hd["hello"] = "world"
>>> d
{{'hello': 'world'}: 'foo'}
Это заменяет хэш-значение, используемое для диктата, на адрес объекта в памяти.