是否可以使用python获取哪些值在列表中重复?
我有一个项目清单:
mylist = [20, 30, 25, 20]
我知道删除重复项的最佳方法是set(mylist),但是是否可以知道正在重复哪些值?如您所见,在此列表中,重复项是第一个和最后一个值。[0, 3]。
set(mylist)
[0, 3]
是否有可能获得此结果或python中类似的东西?我正在努力避免做出荒谬的大if elif条件声明。
if elif
这些答案是O(n),因此比使用的代码多一点,mylist.count()但mylist随着时间的延长,效率会大大提高
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}