如何从自定义对象列表中删除重复项?

3

我有一个自定义的对象类,其中包含各种不同类型的属性。我希望根据其中一个属性从这些对象的列表中删除重复项。

类似于以下代码,但实际上需要获取对象列表而不是指定属性的列表。

filteredData = list(set([x.attribute[0] for x in objList]))

属性到底是什么?所有的对象都有这个属性吗?您是否正在寻找具有特定属性值的对象? - undefined
1个回答

5

您需要在对象上实现 hasheq 方法。

class A:
    def __init__(self, a):
        self.attr1 = a

    def __hash__(self):
        return hash(self.attr1)

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

    def __repr__(self):
        return str(self.attr1)

例子:

l = [A(5), A(4), A(4)]
print list(set(l))
print list(set(l))[0].__class__  # ==> __main__.A. It's a object of class

在最终的列表中,您将收到对象而不是属性的值。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接