你能帮我解决这个python问题吗?
编写一个 Python 函数 all_modes(l) 接受一个非空值 列出 l 并返回一对及其所有元素的集合 模式及其频率:
所以,这是我的代码:
def all_modes(l):
d = {}
for c in l:
if c not in d:
d[c] = 1
else:
d[c] = d[c] + 1
return ({c},d[c])
这是它的一些运行,不幸的是这个输出是错误的:
>>> all_modes([5, 6, 7, 5])
({5}, 2)
>>> all_modes([5])
({5}, 1)
>>> all_modes([5, 6, 7, 5, 6])
({5, 6}, 2)
>>> all_modes([5, 6, 7, 8, 9])
({8, 9, 5, 6, 7}, 1)
我该如何解决?
请您参考如下方法:
您忘记了只返回出现次数最大化的值(模式的症结所在)。也许是这样的?
from collections import defaultdict
def modes(l):
d = defaultdict(int)
for num in l:
d[num] += 1
m = max(d.values())
return {k for k, v in d.items() if v == m}, m
