Python如何匹配列表内多字典的ID键值并计算同ID字段均值
解决方案
你可以使用Python标准库collections.defaultdict完成按id分组的需求,完整实现代码如下:
from collections import defaultdict from statistics import mean # 示例输入 input_list = [ {'id': 123, 'conversions': 1.4227642276422763, 'cpc': 2.2357723577235773, 'cpm': 4.471544715447155, 'reach': 90.65040650406505}, {'id': 123, 'conversions': 1.4056224899598393, 'cpc': 2.208835341365462, 'cpm': 5.622489959839357, 'reach': 89.5582329317269}, {'id': 1234, 'conversions': 1.4056224899598393, 'cpc': 2.208835341365462, 'cpm': 5.622489959839357, 'reach': 89.5582329317269}, ] # 按id分组存储字典 groups = defaultdict(list) for item in input_list: groups[item['id']].append(item) # 计算每个id对应各字段的平均值 result = [] for id_val, item_lst in groups.items(): avg_dict = {'id': id_val} # 排除id字段,其余数值字段计算均值 for field in item_lst[0].keys(): if field != 'id': avg_dict[field] = mean(d[field] for d in item_lst) result.append(avg_dict) print(result)
运行输出
输出会包含所有id对应的平均结果,精确计算结果如下:
[ {'id': 123, 'conversions': 1.4141933588010578, 'cpc': 2.2223038495445197, 'cpm': 5.047017337643256, 'reach': 90.10431971789598}, {'id': 1234, 'conversions': 1.4056224899598393, 'cpc': 2.208835341365462, 'cpm': 5.622489959839357, 'reach': 89.5582329317269} ]
你可以根据需求调整输出格式,比如将结果转换为以id为key的字典结构。
内容的提问来源于stack exchange,提问作者Shubham Sangle
相关产品推荐
相关产品推荐

