如何从自定义对象列表中删除重复项?
How to remove duplicates from a list of custom objects?
我有一个自定义的 class 对象,具有各种不同类型的各种属性。我想根据其中一个属性从这些对象的列表中删除重复项。
类似这样,但实际上得到的是对象列表而不是指定属性的列表。
filteredData = list(set([x.attribute[0] for x in objList]))
您需要在对象
上实现方法hash和eq
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
我有一个自定义的 class 对象,具有各种不同类型的各种属性。我想根据其中一个属性从这些对象的列表中删除重复项。
类似这样,但实际上得到的是对象列表而不是指定属性的列表。
filteredData = list(set([x.attribute[0] for x in objList]))
您需要在对象
上实现方法hash和eqclass 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