Python3如何按字典指定key分组并统计另一key各取值的数量?
实现方案
原生Python实现(无第三方依赖)
适合小数据量场景,不需要额外安装库:
from collections import defaultdict # 整理所有待处理数据到列表(原代码第四个字典重名,此处修正命名避免覆盖) x = {'id': 1, 'addressed_to': 2, 'status': 'open'} y = {'id': 2, 'addressed_to': 2, 'status': 'open'} z1 = {'id': 3, 'addressed_to': 2, 'status': 'closed'} z2 = {'id': 4, 'addressed_to': 3, 'status': 'open'} data = [x, y, z1, z2] # 初始化统计容器 count_map = defaultdict(lambda: {"open": 0, "closed": 0}) for item in data: addr = item["addressed_to"] status = item["status"] count_map[addr][status] += 1 # 转换为要求的输出格式 result = [{"addressed_to": k, "open": v["open"], "closed": v["closed"]} for k, v in count_map.items()]
运行后得到的result完全匹配你要求的格式。
pandas实现(适合大数据量场景)
如果处理的数据量较大,用pandas实现代码更简洁,后续拓展统计维度也更方便:
import pandas as pd df = pd.DataFrame(data) result = ( df.groupby(["addressed_to", "status"]) .size() .unstack(fill_value=0) .reset_index() .to_dict("records") )
内容的提问来源于stack exchange,提问作者E.Keeya
相关产品推荐
相关产品推荐

