Наборы не могут иметь наборы в качестве элементов? - PullRequest
0 голосов
/ 25 мая 2019

когда я пишу в своем коде набор с набором в качестве элемента, когда я его запускаю, он возвращает "TypeError: unhashable type: 'set'"

Пример 1:

{{"why_this_doesn´t_work?"}}

TypeError: unhashable type: 'set'

Пример 2:

A={{"a","b"},{"c"}}

print(A)

TypeError: unhashable type: 'set'

почему это происходит и что означает hashable ?

1 Ответ

1 голос
/ 25 мая 2019

Вы не можете добавлять наборы в набор, потому что наборы могут хранить только неизменяемые объекты.Это объекты, значения которых не могут быть изменены, если объект не был переназначен.Поскольку вы можете добавлять элементы в наборы в Python, наборы являются изменяемыми и не неизменяемыми.Это означает, что они имеют изменяющееся хеш-значение.

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

Если объект неизменный, он не меняет своего значения хеш-функции.Однако при использовании наборов значение хеш-функции может изменяться каждый раз, когда оно изменяется.Следовательно, наборы не могут содержать наборы сами по себе, потому что они принимают только неизменяемые или неустранимые объекты.

Обратитесь к этой таблице, если вам нужна помощь с неизменяемыми и изменяемыми объектами и типами данных в Python: Immutable and Mutable Types in Python

...