我遇到很多需要过滤python(2.7)列表以仅保留有序唯一值的任务。我的通常的方法是通过使用odereddict
从集合:将Python列表转换为已排序的唯一值
from collections import OrderedDict
ls = [1,2,3,4,1,23,4,12,3,41]
ls = OrderedDict(zip(ls,['']*len(ls))).keys()
print ls
输出:
[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))]
这些信息对您有帮助吗? https://wiki.python.org/moin/HowTo/Sorting – Jaxi
不,我不是在寻找''sort''选项 – Dimgold
我要发布一个答案,但是这个线程被锁定,你有没有签出'deque '它的'O(1)'从任一端访问元素。 –