一尘不染

在Python列表中识别重复值

python

是否可以使用python获取哪些值在列表中重复?

我有一个项目清单:

    mylist = [20, 30, 25, 20]

我知道删除重复项的最佳方法是set(mylist),但是是否可以知道正在重复哪些值?如您所见,在此列表中,重复项是第一个和最后一个值。[0, 3]

是否有可能获得此结果或python中类似的东西?我正在努力避免做出荒谬的大if elif条件声明。


阅读 153

收藏
2020-12-20

共1个答案

一尘不染

这些答案是O(n),因此比使用的代码多一点,mylist.count()mylist随着时间的延长,效率会大大提高

如果您只想知道重复项,请使用collections.Counter

from collections import Counter
mylist = [20, 30, 25, 20]
[k for k,v in Counter(mylist).items() if v>1]

如果您需要了解索引,

from collections import defaultdict
D = defaultdict(list)
for i,item in enumerate(mylist):
    D[item].append(i)
D = {k:v for k,v in D.items() if len(v)>1}
2020-12-20