2015-02-08 3 views
0

У меня есть собственный класс объектов с ассортиментом различных атрибутов разных типов. Я хотел бы удалить дубликаты из списка этих объектов на основе одного из этих атрибутов.эффективный способ удаления дубликатов из списка пользовательских объектов в python

Что-то вроде этого, но на самом деле получить список объектов, а не список указанного атрибута.

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

+0

Что такое атрибут? У всех объектов есть этот атрибут? Вы ищете объекты, которые содержат определенное значение для этого атрибута? –

ответ

0

Вам нужно реализовать методы хэш и эк на объект

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 
+0

В конечном списке вы получаете свой объект, а не значения атрибута – cehmja

Смежные вопросы