获取列表中的最大重复项

Hai*_*iro 1 python arrays list

我有这个清单:

mylist = [20, 30, 25, 20, 30]
Run Code Online (Sandbox Code Playgroud)

使用后获取重复值索引后

[i for i, x in enumerate(mylist) if mylist.count(x) > 1]
Run Code Online (Sandbox Code Playgroud)

结果是:

`[0, 1, 3, 4]` 
Run Code Online (Sandbox Code Playgroud)

有两对重复值.我想知道,我怎样才能获得更高的重复值?在此列表中,它是30或任何索引,1或者4,而不是整个重复值列表.

问候...

Joh*_*ooy 6

这个是O(n)

>>> from collections import Counter
>>> mylist = [20, 30, 25, 20, 30]
>>> max(k for k,v in Counter(mylist).items() if v>1)
30
Run Code Online (Sandbox Code Playgroud)


Ned*_*der 5

获取最大重复值:

max(x for x in mylist if mylist.count(x) > 1)
Run Code Online (Sandbox Code Playgroud)

不幸的是,由于重复的count()调用,它具有O(n ** 2)性能。这是一种更简单的方法来完成将具有O(n)性能的相同操作,如果列表很长,则很重要:

seen = set()
dups = set()
for x in mylist:
    if x in seen:
        dups.add(x)
    seen.add(x)
max_dups = max(dups)
Run Code Online (Sandbox Code Playgroud)