3

可能重复:
如何在 Python 列表中删除重复项,同时保持顺序?

让我们考虑一下列表:

x = ['a', 'b', 'c', 'c', 'a', 'd', 'z', 'z']

我想删除这些重复值 list-x 并希望结果为:

y = ['a', 'b', 'c', 'd', 'z']
4

3 回答 3

11

如果订购无关紧要,请使用一组:

>>> list(set(['a', 'b', 'c', 'c', 'a', 'd', 'p', 'p']))
['a', 'p', 'c', 'b', 'd']

如果排序确实很重要,请使用OrderedDict

>>> from collections import OrderedDict 
>>> OrderedDict.fromkeys(['a', 'b', 'c', 'c', 'a', 'd', 'p', 'p']).keys()
['a', 'b', 'c', 'd', 'p']
于 2012-07-18T12:42:02.073 回答
4

由于没有说明有关保留顺序的内容,因此这种方法将起作用:

x = ['a', 'b', 'c', 'c', 'a', 'd', 'z', 'z']

list(set(x))

会给你

['a', 'c', 'b', 'd', 'z']

通过将列表更改为 a set,您可以消除所有重复项。您申请list()将非重复数据更改回列表。

于 2012-07-18T12:39:02.713 回答
2

你也可以使用

y=[ x[i] for i in range(len(x)) if not x[i] in x[:i]]

我认为这将是最简单的解决方案。

于 2012-07-18T12:44:24.617 回答