答案是使用collections.Counter可高效统计字典中值的出现次数,如Counter(data.values())直接返回各值频次,也可手动循环结合get方法实现;多字典时合并值后再统计。

要统计字典中元素出现的次数,首先要明确“元素”是指字典的键、值,还是键值对。通常情况下,我们更关心的是字典中值(value)的出现次数。Python 提供了多种方式来实现这一目标,最常用的是使用 collections.Counter。
统计字典中值的出现次数
假设你有一个字典,想统计其中每个值出现了多少次:
from collections import Counterdata = {'a': 1, 'b': 2, 'c': 1, 'd': 3, 'e': 2, 'f': 1} value_counts = Counter(data.values())
print(value_counts) # 输出: Counter({1: 3, 2: 2, 3: 1})
这里 Counter 接收字典所有值组成的列表,并返回每个值及其出现次数。
立即学习“Python免费学习笔记(深入)”;
只用普通字典手动统计
如果不使用 Counter,也可以通过循环手动统计:
data = {'a': 1, 'b': 2, 'c': 1, 'd': 3, 'e': 2, 'f': 1}
value_counts = {}
for value in data.values():
value_counts[value] = value_counts.get(value, 0) + 1
print(value_counts) # 输出: {1: 3, 2: 2, 3: 1}
利用字典的 get() 方法设置默认值,避免键不存在时出错。
统计键或键值对?
字典的键天然唯一,一般不统计键的“出现次数”。但如果你有多个字典,想统计所有字典中某个键或值的全局频率,可以把它们合并后再用 Counter 处理。
例如,统计多个字典中值的总出现次数:
dict1 = {'a': 1, 'b': 2}
dict2 = {'c': 1, 'd': 3}
dict3 = {'e': 2, 'f': 1}
all_values = []
for d in [dict1, dict2, dict3]:
all_values.extend(d.values())
total_counts = Counter(all_values)
print(total_counts) # 输出: Counter({1: 3, 2: 2, 3: 1})
基本上就这些。根据你的数据结构选择合适的方法,Counter 是最简洁高效的选择。











