为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

当年话下 2023-02-22 17:22:43
我需要编写一个函数来接收列表并返回最重复元素的列表。我的问题是我写的函数只返回一个重复的元素,我需要所有最重复的元素(如果它们重复相同的时间)。在我放置的示例中,函数需要返回方块、黑桃,但结果我只返回了方块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))
查看完整描述

4 回答

?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

以下是如何使用Countercollections 模块:


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']


查看完整回答
反对 回复 2023-02-22
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

Numpy 是另一种简短而快速的方法。您找到元素的频率,然后返回频率最高的元素:


import numpy as np

def getHighestOcurrence(listAnyKind): 

    u, freq = np.unique(listAnyKind, return_counts=True)

    return u[np.argwhere(freq==freq.max())].ravel().tolist()

输出:


['diamonds', 'spades']


查看完整回答
反对 回复 2023-02-22
?
慕标5832272

TA贡献1966条经验 获得超4个赞

尝试一下:


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


查看完整回答
反对 回复 2023-02-22
?
largeQ

TA贡献2039条经验 获得超8个赞

使用字典在其中存储项目名称及其频率


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_item


listAnyKind = ['diamonds', 'spades', 'spades', 'clubs','hearts', 'diamonds'] 

    

print(getHighestOcurrence(listAnyKind))

输出


['diamonds', 'spades']


查看完整回答
反对 回复 2023-02-22
  • 4 回答
  • 0 关注
  • 184 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号