Cha*_*l72 17 python python-3.x
从列表中删除重复项最方便的"Pythonic"方法基本上是:
mylist = list(set(mylist))
Run Code Online (Sandbox Code Playgroud)
但是假设您计算重复项的标准取决于包含在其中的对象的特定成员字段mylist
.
好吧,一个解决方案就是定义__eq__
和__hash__
使用对象mylist
,然后经典list(set(mylist))
将起作用.
但有时您的要求需要更多的灵活性.能够创建动态lambda以使用自定义比较例程以不同方式识别重复项将非常方便.理想情况下,例如:
mylist = list(set(mylist, key = lambda x: x.firstname))
Run Code Online (Sandbox Code Playgroud)
当然,这实际上并不起作用,因为set
构造函数不采用比较函数,并且还set
需要可散列密钥.
那么实现类似的东西的最接近的方法是什么,以便您可以使用任意比较函数删除重复项?
int*_*jay 22
您可以使用dict而不是set,其中dict的键将是唯一值:
d = {x.firstname: x for x in mylist}
mylist = list(d.values())
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2021 次 |
最近记录: |