如何删除列表中的重复值?

时间:2012-07-18 12:38:04

标签: python list

  

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

让我们考虑一下清单:

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

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

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

3 个答案:

答案 0 :(得分:10)

如果订购无关紧要,请使用套装:

>>> 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']

答案 1 :(得分:3)

由于没有说明保留秩序,这种方法可行:

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

list(set(x))

会给你

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

将列表更改为set即可消除所有重复项。您应用list()将非重复数据更改回列表。

答案 2 :(得分:1)

您也可以使用

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

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