Python:集合如何工作

标签 python hash set

我有一个想要变成集合的对象列表。我的对象包含一些字段,其中一些是 o.ido.area。如果这两个字段相同,我希望两个对象相等。即:o1==o2 当且仅当 o1.area==o2.area 和 o1.id==o2.id

我尝试重写 __eq____cmp__ 但我收到错误:TypeError: unhashable instance

我应该重写什么?

最佳答案

定义 __hash__ 方法以根据 id 和 area 字段返回有意义的哈希。例如:

def __hash__(self):
    return hash(self.id) ^ hash(self.area)

关于Python:集合如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2532365/

相关文章:

python - 在 csv 文件中添加填充以使数据框可供 pandas 读取

java - 持久化 sha256 哈希对象?

多次执行哈希加盐

mysql - 使用联接更新 SQL 查询

c++ - std::set 中索引处的元素?

python - Kivy Python 中的下拉菜单

python - 切片表示嵌套列表的 NumPy 数组

Python不会关闭excel工作簿

python - 将 HashEmbeddings 的想法与 sklearn 的 HashingVectorizer 结合使用

c# - 为什么在 C# 中有 HashSet 而没有 Set?