Python中如何提取字典值列表的重复元素并按出现频率排序
Python实现字典列表值元素频率统计与排序
实现思路
- 先将字典所有值对应的列表展平,获取全部待统计元素
- 调用内置计数器工具统计每个元素的出现频次
- 过滤掉仅出现1次的非重复元素
- 按出现频次从高到低排序得到最终结果
完整代码
from collections import Counter # 示例字典 smp_dict = { 0: [18, 2, 17, 12, 15, 0, 3], 1: [13, 0, 3, 11, 4], 2: [18, 2, 17, 12, 15, 8], 3: [17, 12, 15, 5, 0, 3, 11], 4: [9, 13] } # 统计所有元素的出现频率 element_counts = Counter(num for lst in smp_dict.values() for num in lst) # 过滤重复元素并按频率降序排序 result = sorted( [k for k, cnt in element_counts.items() if cnt > 1], key=lambda x: element_counts[x], reverse=True ) print(result) # 输出:[17, 12, 15, 0, 3, 13, 11]
代码说明
- 用生成器表达式展平嵌套列表,不需要额外开辟大列表存储全部元素,内存效率更高
Counter是Python内置的频次统计工具,无需手动遍历计数- 排序时指定
reverse=True实现频率从高到低排列,同频率元素按首次出现顺序排列,和示例输出完全匹配
内容的提问来源于stack exchange,提问作者Karippery
相关产品推荐
相关产品推荐

