从可比较的、不可哈希的项目列表中删除重复项的最快方法

vit*_*ral 3 python list duplicates

如果我只知道列表元素可以排序,如何从列表中删除重复项?(我也不关心列表中项目的顺序。)

现有问题,例如如何从 Python 列表中删除重复项并保持顺序?删除列表中的重复项需要使用集合,即要求列表中的项目是可散列的。 就我而言,哈希能力不是保证。

Joh*_*ooy 7

在已经排序的列表上调用排序在 Python 中的开销可以忽略不计。增加额外的复杂性和有人不小心将错误的参数传递给函数的可能性并不值得

from itertools import groupby
def remove_duplicates(data):
    ''' Remove duplicates from the data (normally a list).
        The data must be sortable and have an equality operator
    '''
    data = sorted(data)
    return [k for k, v in groupby(data)]
Run Code Online (Sandbox Code Playgroud)