如何用Python查找列表中的不同元素及其出现次数
Python列表元素统计实现方案
前置说明
我们的目标列表为:x = ['a', 'b', 'c', 'c', 'c', 'c', 'a'],以下方案可同时实现两个需求:
- 输出列表中不同元素的种类和具体值
- 输出各元素的出现次数,按次数从高到低展示
方案1:使用标准库collections.Counter(推荐)
Counter是Python标准库专门用于统计可迭代对象元素频率的工具,实现代码最简洁:
# 导入依赖 from collections import Counter x = ['a', 'b', 'c', 'c', 'c', 'c', 'a'] # 统计所有元素的出现次数 count_result = Counter(x) # 需求1:输出不同元素信息 unique_elements = list(count_result.keys()) print(f"该列表中有{len(unique_elements)}种不同元素:{'、'.join(unique_elements[:-1])}和{unique_elements[-1]}") # 需求2:输出各元素出现次数,按次数降序排列 sorted_count = sorted(count_result.items(), key=lambda item: item[1], reverse=True) output_parts = [f"{count}个{ele}" for ele, count in sorted_count] print(f"该列表中有{'、'.join(output_parts)}")
运行后输出结果完全匹配需求:
该列表中有3种不同元素:a、b和c 该列表中有4个c、2个a和1个b
方案2:原生Python实现(无额外依赖)
如果不想引入额外工具,可以用字典手动统计:
x = ['a', 'b', 'c', 'c', 'c', 'c', 'a'] count_dict = {} # 手动遍历统计频率 for ele in x: count_dict[ele] = count_dict.get(ele, 0) + 1 # 需求1输出 unique_elements = list(count_dict.keys()) print(f"该列表中有{len(unique_elements)}种不同元素:{'、'.join(unique_elements[:-1])}和{unique_elements[-1]}") # 需求2输出 sorted_count = sorted(count_dict.items(), key=lambda item: item[1], reverse=True) output_parts = [f"{count}个{ele}" for ele, count in sorted_count] print(f"该列表中有{'、'.join(output_parts)}")
运行效果和方案1完全一致。
内容的提问来源于stack exchange,提问作者Shoba
相关产品推荐
相关产品推荐

