【问题标题】:can i use dictionary as a value of set?我可以使用字典作为集合的值吗?
【发布时间】:2022-01-25 17:46:38
【问题描述】:

如您所见,我试图在 set 中使用字典作为值,但它显示错误我想知道为什么不能将字典用作 set 的值?我想知道为什么?有什么理由吗?它根本不起作用,并且出现了很多错误所以请帮我看看有什么问题?为什么我不能使用字典作为设置序列的值?但它适用于列表和元组,但它不仅仅适用于 set 为什么?

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

print(s)

【问题讨论】:

  • 它正在处理一个列表?你能举个例子吗?

标签: python


【解决方案1】:

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

如果一个对象的哈希值永远不会 在其生命周期内发生变化(它需要一个 hash() 方法),并且可以 与其他对象相比(它需要一个 eq() 方法)。可散列 比较相等的对象必须具有相同的哈希值。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-18
    • 1970-01-01
    相关资源
    最近更新 更多