如何使Python中的类与集合一起工作?

2024-04-19 08:06:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有课。你知道吗

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是一个集合,所以我的类肯定出了问题,因为集合不能判断它们是重复的。你知道吗

现在,我可以用几种不同的方法来解决我的特定问题(重新编写类,这样我就不需要它了(数据可能太简单了,不值得拥有它自己的类),或者迭代并删除重复项,或者重新编写代码,这样重复项就不会在第一时间出现),但是我可能会在将来再次遇到这个问题,我很乐意这样做知道我需要做什么才能让集合与我自己编写的类一起工作。你知道吗

想法/帮助?你知道吗


Tags: 代码nameltself列表returninitdef
1条回答
网友
1楼 · 发布于 2024-04-19 08:06:43

这看起来不对:

def __eq__(self,other):
    return self.name == self.count

也许你的意思是:

def __eq__(self,other):
    return self.name == other.name

相关问题 更多 >