In [1]: l1 = ['a',2,3,0,9.0,0,2,6,'b','a']
In [2]: l2 = list(set(l1))
In [3]: l2
Out[3]: ['a', 0, 2, 3, 6, 9.0, 'b']
在这里你可以看到列表 l2 以不同的顺序下降,然后是原始 l1,我需要从我的列表中删除重复的元素而不改变列表元素的序列/顺序....
最佳答案
如果你不关心效率,这是 O(n*m)
>>> sorted(set(l1), key=l1.index)
['a', 2, 3, 0, 9.0, 6, 'b']
使用中间字典更复杂,但是是 O(n+m*logm)
其中 n 是 l1 中元素的数量,m 是 l1 中唯一元素的数量
>>> l1 = ['a',2,3,0,9.0,0,2,6,'b','a']
>>> d1=dict((k,v) for v,k in enumerate(reversed(l1)))
>>> sorted(d1, key=d1.get, reverse=True)
['a', 2, 3, 0, 9.0, 6, 'b']
在 Python3.1 中你有 OrderedDict 所以它很容易
>>> l1 = ['a',2,3,0,9.0,0,2,6,'b','a']
>>> list(OrderedDict.fromkeys(l1))
['a', 2, 3, 0, 9.0, 6, 'b']
关于python - 如何使用 set 维护列表的顺序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3562971/