从列表中删除重复项最方便的“Pythonic”方法基本上是:
mylist = list(set(mylist))
但是假设您计算重复项的标准取决于mylist
.
好吧,一种解决方案是只为 中的对象定义__eq__
和,然后经典将起作用。__hash__
mylist
list(set(mylist))
但有时您的要求需要更多的灵活性。能够创建动态 lambda 以使用自定义比较例程以不同方式识别重复项将非常方便。理想情况下,类似:
mylist = list(set(mylist, key = lambda x: x.firstname))
当然,这实际上不起作用,因为set
构造函数不采用比较函数,并且还set
需要可散列键。
那么实现这样的事情的最接近的方法是什么,以便您可以使用任意比较函数删除重复项?