如果某些元素重复相同的时间,则在列表中出现次数最多

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


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))


当年话下
浏览 185回答 4
4回答

天涯尽头无女友

以下是如何使用Countercollections 模块:from collections import Counterdef 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']

慕姐4208626

Numpy 是另一种简短而快速的方法。您找到元素的频率,然后返回频率最高的元素:import numpy as npdef getHighestOcurrence(listAnyKind):     u, freq = np.unique(listAnyKind, return_counts=True)    return u[np.argwhere(freq==freq.max())].ravel().tolist()输出:['diamonds', 'spades']

慕标5832272

尝试一下:def getHighestOcurrence(listAnyKind):     counter = 0    num = listAnyKind[0]     frequency = {}      for i in set(listAnyKind):         frequency[i] = listAnyKind.count(i)          return [k for k in frequency if frequency[k] == max(frequency.values())]  listAnyKind = ['diamonds', 'spades', 'spades', 'clubs','hearts', 'diamonds'] print(getHighestOcurrence(listAnyKind))

largeQ

使用字典在其中存储项目名称及其频率def getHighestOcurrence(listAnyKind):     dic = {}    for item in listAnyKind:        if item not in dic:            dic[item] = 1        else:            dic[item]+=1    max_occu = max(dic.values())        max_item = [k for k, v in dic.items() if v==max_occu]    return max_itemlistAnyKind = ['diamonds', 'spades', 'spades', 'clubs','hearts', 'diamonds']     print(getHighestOcurrence(listAnyKind))输出['diamonds', 'spades']
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python