【发布时间】:2018-09-05 22:37:36
【问题描述】:
我正在尝试编写一个程序来显示列表中出现频率最高的数字。我试图在不导入任何库的情况下做到这一点。到目前为止,我有一些东西可以给我最常见的 # 出现的次数,但我想要这个数字本身,而不是它出现的次数。我怎样才能以一种简单的方式改变我目前拥有的东西?
def freq(L):
st = []
L.sort()
for i in L:
st.append(L.count(i))
print max(st)
编辑:例如,freq([4, 6, 4, 3, 9, 1, 4]) 返回 3,因为 4 出现了 3 次。但我希望它以最常见的值返回 4。
【问题讨论】:
-
可能是浮点数还是严格整数?
-
使用
collections.Counter替换您编写的大部分代码——它为您提供了一个包含列表中每个项目频率的字典。颠倒听写。将max应用于密钥。现在只需将其用作反向字典的索引。这将返回一个最常见的项目。 -
当您说“不导入任何库”时,是否包括标准库中的模块,例如
collections.Counter?如果是这样,您为什么要避免使用这些库?这是一个学习练习吗? -
您好,您能举一个输入数据的示例以及您希望输出的内容吗?
-
@Prune,请注意
Counter确实有一个most_common方法,这意味着无需手动计算您的值的最大值。
标签: python python-3.x python-2.7 list counter