gpt4 book ai didi

python - 如何使用 set 维护列表的顺序?

转载 作者:太空狗 更新时间:2023-10-30 01:43:59 27 4
gpt4 key购买 nike

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com