统计字典列表中所有键对应值的出现频次
统计字典列表中所有值的出现次数
以下几种Python方法可实现需求:
基础循环计数
初始化空字典,遍历每个字典的所有值,逐个更新计数:data = [ {'migs_ba': 'O', 'migs_eu': 'O', 'migs_org': 'O', 'migs_pl': 'O', 'migs_vi': 'O', 'mimag': 'EM', 'mimarks_c': 'O', 'mimarks_s': 'EM', 'mims': 'EM', 'misag': 'EM', 'miuvig': 'EM'}, {'migs_ba': 'O', 'migs_eu': 'O', 'migs_org': 'O', 'migs_pl': 'O', 'migs_vi': 'O', 'mimag': 'EM', 'mimarks_c': 'O', 'mimarks_s': 'EM', 'mims': 'EM', 'misag': 'EM', 'miuvig': 'EM'} ] counts = {} for d in data: for value in d.values(): counts[value] = counts.get(value, 0) + 1 print(counts) # 输出: {'O': 12, 'EM': 10}使用
collections.defaultdict简化计数逻辑
借助defaultdict自动处理默认值,减少代码判断:from collections import defaultdict counts = defaultdict(int) for d in data: for value in d.values(): counts[value] += 1 result = dict(counts) print(result) # 输出: {'O': 12, 'EM': 10}使用
collections.Counter快速统计
先将所有值合并为一个列表,再用Counter一键统计:from collections import Counter all_values = [value for d in data for value in d.values()] counts = Counter(all_values) print(dict(counts)) # 输出: {'O': 12, 'EM': 10}
内容的提问来源于stack exchange,提问作者Mark Miller
相关产品推荐
相关产品推荐

