Skip to main content
 首页 » 编程设计

python : Mode of a List

2025年05月04日34oomusou

你能帮我解决这个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