首页 > 解决方案 > 如果某些元素重复相同的时间,则列表中的最高出现次数

问题描述

我需要编写一个函数来接收一个列表并返回一个重复次数最多的元素的列表。我的问题是我写的函数只返回一个重复的元素,我需要所有重复次数最多的元素(如果它们重复相同的时间)。在示例中,我将函数需要返回菱形黑桃,但结果我只返回了菱形

def getHighestOcurrence(listAnyKind): 
    counter = 0
    num = listAnyKind[0] 
      
    for i in listAnyKind: 
        frequency = listAnyKind.count(i) 
        if (frequency > counter): 
            counter = frequency 
            num = i 
  
    return num 
  

listAnyKind = ['diamonds', 'spades', 'spades', 'clubs','hearts', 'diamonds'] 
    
print(getHighestOcurrence(listAnyKind))

标签: pythonpython-3.xlist

解决方案


以下是您可以Counter从集合模块中使用的方法:

from collections import Counter

def getHighestOcurrence(listAnyKind):
    c = Counter(listAnyKind)
    m = max(c.values())
    return [k for k in c if c[k] == m]

listAnyKind = ['diamonds', 'spades', 'spades', 'clubs','hearts', 'diamonds'] 
print(getHighestOcurrence(listAnyKind))

输出:

['diamonds', 'spades']

推荐阅读