Python如何统计多值字典中特定值的出现次数
问题原因
你编写的代码遍历的是dic.values(),拿到的是每个键对应的完整集合对象(示例中为{0,1,2}和{1,2}),直接将整个集合和数字1做相等判断,结果永远为False,求和后自然得到0。
解决方法
统计单个特定值的总出现次数
如果只需统计某一个指定数字的出现次数,嵌套遍历所有集合的元素做判断即可:
dic = {'A':{0,1,2},'B':{1,2}} target = 1 count = sum(1 for value_set in dic.values() for num in value_set if num == target) print(count)
运行后输出结果为预期的2。
批量统计所有数字的总出现次数
如果需要得到全量数字的出现次数统计结果,可以调用collections.Counter实现:
from collections import Counter dic = {'A':{0,1,2},'B':{1,2}} count_result = Counter(num for value_set in dic.values() for num in value_set) print(count_result) # 取单个数字的出现次数直接用 count_result[1] 即可
运行后输出结果为Counter({1: 2, 2: 2, 0: 1})。
内容的提问来源于stack exchange,提问作者zimon
相关产品推荐
相关产品推荐

