如何找出列表中出现次数相同的最常见元素及其计数
如何用
most_common获取出现次数相同的高频元素? 嘿,这个需求我做统计分析的时候也碰到过!直接用collections.Counter的most_common()默认只会按频次降序返回所有元素,但要精准抓取所有出现次数等于最高频次的元素,只需要多两步处理就行,我给你一步步演示:
核心思路
- 用
Counter统计列表中每个元素的出现次数 - 获取最高的频次数值
- 筛选出所有次数等于该最高值的元素,整理成你需要的元组列表格式
代码实现
首先导入必备的模块:
from collections import Counter
处理列表A的情况
A = [1,2,3,5,2,3] # 第一步:统计元素频次 counter_a = Counter(A) # 第二步:获取最高频次(取most_common第一个元素的次数值) max_freq = counter_a.most_common(1)[0][1] # 第三步:筛选所有频次等于最高值的元素 result_a = [item for item in counter_a.most_common() if item[1] == max_freq] print(result_a) # 输出:[(2, 2), (3, 2)]
处理列表B的情况
B = [1,2,3,5,2,3,5] counter_b = Counter(B) max_freq_b = counter_b.most_common(1)[0][1] result_b = [item for item in counter_b.most_common() if item[1] == max_freq_b] print(result_b) # 输出:[(2, 2), (3, 2), (5, 2)]
小说明
- Python 3.7及以上版本中,
Counter会保持元素的插入顺序,所以筛选后的结果顺序和元素第一次出现的顺序一致,正好匹配你给出的示例 - 如果不需要保持顺序,也可以用
sorted()对结果做排序,比如sorted(result_a)就能按元素值排序
内容的提问来源于stack exchange,提问作者Small_J
相关产品推荐
相关产品推荐

