почему объекты dict unhashable в Python?

Я имею в виду, почему наклон мы помещаем ключ dict как dict?

это означает, что у нас не может быть словаря, имеющего ключ как другой словарь...

25
задан shahjapan 24 December 2009 в 08:34
поделиться

3 ответа

Короткий ответ: потому что это mutable контейнеры .

Если бы диктат был хэширован, его хэш изменился бы по мере изменения содержимого.

.
39
ответ дан 28 November 2019 в 18:25
поделиться

В Python ни один из типов мутируемых контейнеров не является хэшируемым , потому что они мутируемы и, следовательно, их хэш-значение может изменяться в течение жизни.

1
ответ дан 28 November 2019 в 18:25
поделиться

Как говорили другие, хэш-значение диктата меняется по мере изменения содержимого.

Однако, если вам действительно нужно использовать диктаты в качестве ключей, вы можете использовать подкласс диктата, чтобы сделать хэш-версию.

>>> 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'}

Это заменяет хэш-значение, используемое для диктата, на адрес объекта в памяти.

6
ответ дан 28 November 2019 в 18:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: