集不能有集作为元素?

时间:2019-05-25 03:48:15

标签: python set typeerror

当我在代码中编写一个以集合为元素的集合时,当我运行它时,它将返回"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 个答案:

答案 0 :(得分:1)

您不能将集合添加到集合中,因为集合只能存储不可变的对象。这些对象的值除非已重新分配,否则无法更改。由于您可以在Python中将元素添加到集合中,因此集合是可变的并且不是不变的。这意味着它们具有变化的哈希值。

具有可散列性意味着具有一个id,在key:value对的情况下或仅在内存中,该id可用于引用该对象。

如果对象是不可变的,则不会更改其哈希值。但是,使用集时,哈希值在修改后随时会发生变化。因此,集本身不能包含集,因为它仅接受不可变或不可哈希的对象。

如果您需要有关Python中不可变和可变对象和数据类型的帮助,请参考此表:Immutable and Mutable Types in Python