我可以用dictionary作为set的值吗



正如你所看到的,我试图将set中的dictionary用作值,但它显示了错误。我想知道为什么不能将dictionary作为set的值?我想知道为什么?有什么原因吗?它根本不起作用,而且有很多错误,所以请帮我出了什么问题?为什么我不能使用dictionary作为集合序列的值?但它可以处理列表和元组,但不能只处理集合,为什么?

s={1,2,4,{1:'fc',2:'tw'},'co-operator'}
print(s)

集合要求其中的所有元素都是可散列的。字典是不可散列的。

如果对象具有从不在其生命周期内发生更改(它需要hash((方法(,并且可以与其他对象相比(它需要eq((方法(。Hashable比较相等的对象必须具有相同的哈希值。

可哈希性使对象可用作字典键和集合成员,因为这些数据结构在内部使用哈希值。

Python的大多数不可变内置对象都是可散列的;可变的容器(如列表或字典(不是;不变的容器(如元组和frozenset(只有在它们元素是可散列的。作为用户定义实例的对象默认情况下,类是可散列的。他们都比较不平等(除了它们自己(,并且它们的散列值是从它们的id((派生的。

最新更新