如何使用 set 维护列表的顺序?
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 的顺序不同,我需要从列表中删除重复的元素而不更改列表元素的顺序/顺序......
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']
Here you can see the the list l2 is falling with different sequence then the original l1, I need to remove the duplicate elements from my list without changing the sequence/order of the list elements....
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果你不关心效率,这是 O(n*m)
使用中间字典更复杂,但是是 O(n+m*logm)
其中 n 是 l1 中的元素数量,m 是唯一的数量l1 中的元素
在 Python3.1 中你有 OrderedDict 所以这很容易
If you are not concerned with efficiency, this is O(n*m)
Using an intermediate dict is more complicated, but is O(n+m*logm)
where n is the number of elements in l1 and m is the number of unique elements in l1
In Python3.1 you have OrderedDict so it's very easy
您可以通过定义如下函数来解决它:
要使用它:
You can solve it by defining a function like this:
To use it:
这是我的头脑中的想法(使用字典):
编辑:使用集合(也是我的头脑中的):
This is off the top of my head (using dicts):
Edit: Using sets (also off the top of my head):