Python实现嵌套列表内JSON字典的values字段逐元素分组求和
嵌套列表内字典values数组逐位置求和实现方案
需求说明
现有两层嵌套结构的列表:
- 共2个一级子列表
- 每个一级子列表下存储若干字典,每个字典的
values字段对应一个长度相等的数值数组
输入结构示例如下:
input_data = [ [ {'type': 'a', 'id': 1, 'values': [1.0, 1.0, 0.5, 0.3]}, {'type': 'a', 'id': 2, 'values': [29, 25, 21, 22]}, ], [ {'type': 'a', 'id': 3, 'values': [6.36, 6.58, 6.62, 6.66 ]}, {'type': 'a', 'id': 4, 'values': [1.2, 1.5, 1.5, 1.5]}, ] ]
要求以每个一级子列表为单位,对该子列表下所有字典的values数组进行逐位置元素求和,最终输出格式如下:
output=[[30, 26, 21.5, 22.3 ],[7.56, 8.08, 8.02, 8.16 ]]
实现代码
# 定义输入数据 input_data = [ [ {'type': 'a', 'id': 1, 'values': [1.0, 1.0, 0.5, 0.3]}, {'type': 'a', 'id': 2, 'values': [29, 25, 21, 22]}, ], [ {'type': 'a', 'id': 3, 'values': [6.36, 6.58, 6.62, 6.66]}, {'type': 'a', 'id': 4, 'values': [1.2, 1.5, 1.5, 1.5]}, ] ] # 核心处理逻辑 output = [] for sub_group in input_data: # 提取当前分组下所有values数组 all_values = [item['values'] for item in sub_group] # 按位置分组后逐组求和 group_sum = [sum(pos_elements) for pos_elements in zip(*all_values)] output.append(group_sum) # 打印结果验证 print(output)
逻辑说明
- 遍历每个一级子列表(分组),提取分组内所有字典的
values字段,生成分组内所有数值数组的集合 - 借助
zip(*all_values)语法,将多个等长数组按位置解包,得到每个位置对应的所有元素的元组 - 对每个位置的元素元组求和,得到当前分组的逐位置求和结果
- 汇总所有分组的结果,得到最终输出
运行上述代码后得到的结果和要求的输出完全一致。
内容的提问来源于stack exchange,提问作者teratoulis
相关产品推荐
相关产品推荐

