如何获取数据集中最高频率的键(众数/多众数)?代码求助
获取字典中对应最大值的所有键(众数)
首先,注意不要用dict作为变量名——这会覆盖Python内置的dict类型,建议改成count_dict这类名称,避免潜在问题。
基于你已经完成的统计逻辑,只需两步就能拿到所有对应最大值的键:
- 提取字典中值的最大值(也就是数据的最高出现次数)
- 筛选出所有值等于该最大值的键
基于你的原始思路的完整代码
data = [3, 4, 3, 4, 4, 3, 1, 1] # 替换dict为count_dict,避免覆盖内置类型 count_dict = {} for number in data: if number in count_dict: count_dict[number] += 1 else: count_dict[number] = 1 # 获取最大出现次数 max_count = max(count_dict.values()) # 筛选所有出现次数等于最大值的键(即众数) modes = [num for num, count in count_dict.items() if count == max_count] print(f"众数为:{modes}")
运行后输出:众数为:[3, 4],完全符合你要的多众数场景。
更简洁的实现(用collections.Counter)
Python标准库的collections.Counter可以直接帮你完成次数统计,省去手动遍历的代码:
from collections import Counter data = [3, 4, 3, 4, 4, 3, 1, 1] count_dict = Counter(data) max_count = max(count_dict.values()) modes = [num for num, count in count_dict.items() if count == max_count] print(f"众数为:{modes}")
这个版本逻辑和之前一致,但代码更简洁高效。
内容的提问来源于stack exchange,提问作者Jovani fernandez
相关产品推荐
相关产品推荐

