从可比较但不可哈希的项目列表中删除重复项的最快方法
从可比较但不可哈希的项目列表中删除重复项的最快方法
这个问题已经有了答案:
如果我只知道列表元素可以排序,我如何从列表中删除重复项?(我也不关心列表中项目的顺序。)
现有问题,如如何从Python列表中删除重复项并保持顺序? 或 从列表中删除重复项 需要使用 set,也就是要求列表中的项可哈希。
在我的情况下,哈希性不能保证。
admin 更改状态以发布 2023年5月23日
编辑:查看John La Rooy的答案,那个更好一些。
再次说明,此解决方案仅适用于可排序列表。如果您预先对其进行了排序(实际上对象只需要被分组),则可以设置sort=False,然后它只需要比较运算符。
def remove_duplicates(data, sort=True): ''' Remove duplicates from the data (normally a list). The data must be sortable and have an equality operator ''' if not data: return data if sort: data = sorted(data) out = [data[0]] for i, n in enumerate(data[1:]): if data[i] != n: out.append(n) return out