Python如何对嵌套列表内首元素相同的子列表的第二个元素求和
问题需求
- 输入为字符串类型的嵌套列表,每个子列表固定包含2个元素
- 以子列表的第1个元素作为分组依据,将同组所有子列表的第2个元素转为数值后求和
- 最终输出首元素唯一、第2个元素为对应求和结果的新嵌套列表
代码实现(Python)
首先定义原始输入列表:
original_list = [ ['14', '6'], ['11', '9'], ['3', '-12'], ['14', '-6'], ['11', '8'], ['7', '1'], ['4', '-6'], ['3', '-12'], ['1', '2'] ]
方法1:普通字典实现,无需引入第三方依赖
sum_dict = {} for key, val_str in original_list: val = int(val_str) if key in sum_dict: sum_dict[key] += val else: sum_dict[key] = val # 转换为要求的嵌套列表格式 result = [[k, str(v)] for k, v in sum_dict.items()] print(result)
方法2:使用defaultdict简化写法
from collections import defaultdict sum_dict = defaultdict(int) for key, val_str in original_list: sum_dict[key] += int(val_str) result = [[k, str(v)] for k, v in sum_dict.items()] print(result)
运行结果
两种方法得到的输出一致,符合需求要求:
[['14', '0'], ['11', '17'], ['3', '-24'], ['7', '1'], ['4', '-6'], ['1', '2']]
逻辑说明
遍历原始嵌套列表时,用字典存储每个首元素对应的累加值:
- 首次遇到某首元素时,将其第二个元素转整数后作为字典对应键的初始值
- 再次遇到相同首元素时,将新的第二个元素转整数后累加到对应键的数值上
- 遍历完成后将字典键值对转换为子列表格式,即得到目标结果
内容的提问来源于stack exchange,提问作者Dyl 111
相关产品推荐
相关产品推荐

