所以我试图创建一个函数,它将采用单个参数 numlist(一个非空数字列表),并返回在 numlist 中出现频率最高的排序数字列表。
到目前为止,我已经设法创建了一个字典(数字作为键,它们的频率作为值)。但是我还是想找出其中哪一个有最大值并返回。问题是我不知道如何比较它们。现在有这样的单行本
max(stats, key=stats.get)
但是如果有多个值满足该要求怎么办?
mode([5, 1, 1, 5])
#I'm guessing this should return [1, 5] if sorted...
你会怎么处理?感谢您提供的任何帮助!
这是我的代码:
def mode(numlist):
mylist = numlist
dic = {}
for num in mylist:
if num in dic:
dic[num] += 1
else:
dic[num] = 1
# try to get the max value and return them in a set form like [1, 0]
最佳答案
您可以使用 Counter
它返回一个类似 dict
的对象,其中元素存储为字典键,它们的计数存储为字典值。
from collections import Counter
def mode(my_list):
ct = Counter(my_list)
max_value = max(ct.values())
return sorted(key for key, value in ct.items() if value == max_value)
演示:
In [46]: mode([5, 1, 1, 5])
Out[46]: [1, 5]
关于python - 如何返回列表中出现次数最多的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36516279/