Skip to main content
 首页 » 编程设计

python之如何删除实例列表中的 `duplicates'

2025年05月04日15findumars

我有一个特定类的实例列表。该列表包含“重复项”,即重复项共享完全相同的属性。我想从此列表中删除重复项。

我可以通过使用检查两个实例是否共享相同的属性

class MyClass: 
 
    def __eq__(self, other) :  
        return self.__dict__ == other.__dict__ 

我当然可以遍历整个实例列表并逐个元素地比较它们以删除重复项,但我想知道是否有更 pythonic 的方法来执行此操作,最好使用 in 运算符 + 列表理解。

请您参考如下方法:

sets(无顺序)

集合不能包含重复的元素。 list(set(content)) 将对列表进行去重。这不是太低效,可能是更好的方法之一:P 你需要为你的类定义一个 __hash__ 函数,对于相等的元素必须相同,对于不相等的元素必须不同这个工作的元素。请注意,hash 值必须遵守上述规则,否则它可能会在运行之间发生变化而不会导致问题。

index函数(稳定顺序)

您可以执行 lambda l: [l[index] for index in range(len(l)) if index == l.index(l[index])]。这只会保留列表中第一个元素。

in 运算符(稳定顺序)

def uniquify(content): 
    result = [] 
    for element in content: 
        if element not in result: 
            result.append(element) 
    return result 

这将继续向输出列表追加元素,除非它们已经在输出列表中。