Python多层嵌套字典lines键下各指标平均值计算实现
Python嵌套字典指标平均值计算实现
完整可运行代码
from collections import defaultdict # 原始嵌套字典 original_dict = { 'data1': { 'IOU': {'B': 0.1, 'G': 0.3}, 'lines': {'B': {'accuracy': 0.3, 'recall': 0.3}, 'G': {'accuracy': 0.1, 'recall': 0.6}} }, 'data2': { 'IOU': {'B': 0.2, 'G': 0.8}, 'lines': {'B': {'accuracy': 0.5, 'recall': 0.3}, 'G': {'accuracy': 0.9, 'recall': 0.5}} } } # 初始化指标累加器 metric_sum = defaultdict(lambda: defaultdict(float)) # 统计data分组总数 data_count = len(original_dict) # 遍历所有data分组累加对应指标值 for data_item in original_dict.values(): lines_info = data_item['lines'] for group in ('B', 'G'): group_info = lines_info[group] metric_sum[group]['accuracy'] += group_info['accuracy'] metric_sum[group]['recall'] += group_info['recall'] # 计算平均值并组装成目标结构 result = { 'lines': { group: { 'accuracy': metric_sum[group]['accuracy'] / data_count, 'recall': metric_sum[group]['recall'] / data_count } for group in ('B', 'G') } } print(result)
运行输出
{'lines': {'B': {'accuracy': 0.4, 'recall': 0.3}, 'G': {'accuracy': 0.5, 'recall': 0.55}}}
逻辑说明
- 使用
defaultdict构建累加结构,无需手动初始化键值,代码更简洁 - 自动读取所有data分组的数量,新增data分组时无需修改代码即可自动适配
- 遍历所有分组累加对应指标的总和,最后除以分组数得到平均值,组装为要求的字典结构
内容的提问来源于stack exchange,提问作者j-ax
相关产品推荐
相关产品推荐

