使用集合的Python唯一列表[重复]

Posted

技术标签:

【中文标题】使用集合的Python唯一列表[重复]【英文标题】:Python unique list using set [duplicate] 【发布时间】:2012-10-04 10:27:36 【问题描述】:

可能重复:How do you remove duplicates from a list in Python whilst preserving order?

我要做的是编写一个方法,该方法将列表作为参数并使用集合返回列表的副本,其中每个元素只出现一次,以及让新列表中的元素出现在它们在原始列表中的首次出现顺序。我必须为此使用一个集合,但是,我无法做到这样才能使输出的顺序正确,同时获得快速的结果。 如果我这样说:

def unique(a):

return list(set(a))

并传递一个包含数百万个元素的列表,它会很快给我一个结果,但它不会被排序。 所以我现在拥有的是这样的:

def unique(a):
b = set(a)
c = 
d = []
for i in b:
    c[a.index(i)] = i
for i in c:
    d.append(c[i])
return d

这给了我想要的结果,但速度不够快。如果我传递一个包含一百万个元素的列表,我可能要等半个小时,而上面的一个班轮只需要不到一秒钟。我该如何解决这个问题?

【问题讨论】:

【参考方案1】:
>>> from collections import OrderedDict
>>> items = [1, 2, 3, 'a', 2, 4, 'a']
>>> OrderedDict.fromkeys(items).keys()
[1, 2, 3, 'a', 4]

【讨论】:

谢谢,但我需要以某种方式合并一组。有什么办法吗? @user1744238 我的解决方案是你能得到的最有效的解决方案,但如果出于某种原因你真的需要使用我猜想的一组作业,那么请看这个:@ 987654321@ 使用集合的类似方式(但上面的答案再次更好,不使用集合):items = [1, 2, 3, 'a', 2, 4, 'a']; s = set(); filter(lambda i: not i in s and not s.add(i), items)

以上是关于使用集合的Python唯一列表[重复]的主要内容,如果未能解决你的问题,请参考以下文章

python 集合

python -011-集合

Python的集合介绍

Python集合set

Python入门教程第43篇 集合

Python培训知识总结系列- 第二章Python数据结构第三部分-字典,集合