我如何检查一个列表是否有任何重复,并返回一个没有重复的新列表?


当前回答

我用纯python函数做到了这一点。当您的项目值是JSON时,这是有效的。

[i for n, i in enumerate(items) if i not in items[n + 1 :]]

其他回答

有时你需要删除重复的项目,而不需要创建新的列表。例如,列表很大,或者将其作为影子副本保存

from collections import Counter
cntDict = Counter(t)
for item,cnt in cntDict.items():
    for _ in range(cnt-1):
        t.remove(item)

我认为转换为set是删除重复的最简单的方法:

list1 = [1,2,1]
list1 = list(set(list1))
print list1

尝试使用集合:

import sets
t = sets.Set(['a', 'b', 'c', 'd'])
t1 = sets.Set(['a', 'b', 'c'])

print t | t1
print t - t1

使用set,但保持顺序

unique = set()
[unique.add(n) or n for n in l if n not in unique]
>>> t = [1, 2, 3, 1, 2, 5, 6, 7, 8]
>>> t
[1, 2, 3, 1, 2, 5, 6, 7, 8]
>>> s = []
>>> for i in t:
       if i not in s:
          s.append(i)
>>> s
[1, 2, 3, 5, 6, 7, 8]