【发布时间】: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
这给了我想要的结果,但速度不够快。如果我传递一个包含一百万个元素的列表,我可能要等半个小时,而上面的一个班轮只需要不到一秒钟。我该如何解决这个问题?
【问题讨论】: