python - 如何返回列表中出现次数最多的元素?

标签 python list python-3.x

所以我试图创建一个函数,它将采用单个参数 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/

相关文章:

python - 如何基于ylim缩放颜色条

python - 无法通过 Python 中的扭曲将索引从列表“复制”到另一个索引

python-3.x - Tkinter 复制到剪贴板在 PyCharm 中不起作用

python - 如果另一列中存在值,如何清除单元格中的值?

python - 将列添加到 pandas 数据框中,从其他列中的列表中获取值

python - 如何使用 python 忽略许多 XML 文件中的标签

python - Djangocollectstatics仅收集管理静态文件

list - 如何在 Scala 中制作简单的列表?

c++ - 按两个条件对 Lambda 表达式 C++ 进行排序

python - 使用 Python 工厂习语