将 Python 列表转换为有序的唯一值

Dim*_*old 4 python list set ordereddictionary python-2.7

我遇到许多任务,需要过滤 python (2.7) 列表以仅保留有序的唯一值。我通常的方法是使用odereddictfrom 集合:

from collections import OrderedDict

ls = [1,2,3,4,1,23,4,12,3,41]

ls = OrderedDict(zip(ls,['']*len(ls))).keys()

print ls
Run Code Online (Sandbox Code Playgroud)

输出是:

[1,2,3,4,23,12,41]

有没有其他最先进的方法可以在Python中做到这一点?

  • 注意 - 输入和输出应如下所示list

编辑- 方法的比较可以在这里找到: https: //www.peterbe.com/plog/uniqifiers-benchmark

同时最好的解决方案是:

def get_unique(seq):
    seen = set()
    seen_add = seen.add
    return [x for x in seq if not (x in seen or seen_add(x))]
Run Code Online (Sandbox Code Playgroud)

Eug*_*ash 5

你可以使用这样的集合:

newls = []
seen = set()

for elem in ls:
    if not elem in seen:
        newls.append(elem)
        seen.add(elem)
Run Code Online (Sandbox Code Playgroud)