我有一堂课。
class Part:
def __init__(self,name):
self.name = name
self.count = 0
def __hash__(self):
return hash(self.name)
def __lt__(self,other):
return self.count < other.count
def __eq__(self,other):
return self.name == self.count
我创建了一堆这样的对象,并用它们填充了一个列表。该列表最终包含重复项。我的代码中的一个段需要它,但是当需要输出时,我只想输出每个部分一次。所以我把它放在一个集合中。
uniqueParts = set(parts)
然后我迭代它以将其写入文件。
for part in uniqueParts:
f.write(part.name+": "+str(part.count)+'\n')
这不起作用。它输出每个重复项。由于 uniqueParts 是一个集合,所以我的班级一定有问题,集合无法判断它们是重复的。
现在,我可以用几种不同的方式解决我的具体问题(重写类,这样我就不需要它了(数据可能太简单了,不值得拥有它自己的类)或者迭代并删除重复项,或者重新编写我的代码以便重复从来没有发生过)但是我将来可能会再次遇到这个问题,我想知道我需要做什么才能让 Sets 与我自己编写的类一起工作。
想法/帮助?