You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现嵌套列表中第n个元素相同时对应值求和

Python实现嵌套列表按指定元素分组求和

我来帮你搞定这个分组求和的需求!首先咱们明确一下目标:针对给定的嵌套列表my_list1,要按照子列表的第0个元素(姓名)进行分组,把每组内子列表的数值型元素(也就是索引1和3的元素)分别求和,最终得到每个姓名对应的汇总结果。

先把咱们要处理的列表贴出来,方便对照:

my_list1 = [
    ['John',2,'goals',4],
    ['Robert',5,'hike',3],
    ['Julia',6,'paid',2],
    ['John',4,'fine',6],
    ['Robert',3,'loop',44],
    ['Julia',1,'cool',33],
    ['Kris',6,'wild',4],
    ['Kris',8,'word',67]
]

下面给你三种实用的实现方式:

方法1:普通字典手动累加(新手友好,逻辑清晰)

这种方法最容易理解,通过遍历列表,用字典存储每个姓名对应的数值总和,不存在的姓名就初始化,存在的就累加:

# 初始化空字典存储结果
result = {}

for item in my_list1:
    name = item[0]
    num1 = item[1]
    num2 = item[3]
    
    # 如果姓名不在字典里,初始化两个数值的和
    if name not in result:
        result[name] = [num1, num2]
    # 否则直接累加对应数值
    else:
        result[name][0] += num1
        result[name][1] += num2

# 转换成和原列表类似的嵌套列表格式(可选)
final_list = [[k] + v for k, v in result.items()]
print(final_list)

运行后输出:

[['John', 6, 10], ['Robert', 8, 47], ['Julia', 7, 35], ['Kris', 14, 71]]

方法2:用collections.defaultdict(更简洁高效)

defaultdict可以帮我们自动初始化键对应的默认值,省去判断键是否存在的步骤,代码更简洁:

from collections import defaultdict

# 初始化每个键对应的默认值为[0, 0],分别对应两个数值的总和
result = defaultdict(lambda: [0, 0])

for item in my_list1:
    name = item[0]
    result[name][0] += item[1]
    result[name][1] += item[3]

# 转换成嵌套列表格式(可选)
final_list = [[k] + v for k, v in result.items()]
print(final_list)

这个方法的输出和上面完全一致,代码量更少,适合熟悉Python标准库的同学。

方法3:用itertools.groupby(适合已排序的场景)

groupby可以直接按指定键分组,但要注意它只会对连续相同的元素分组,所以我们需要先把列表按姓名排序:

from itertools import groupby

# 先按姓名对列表排序
sorted_list = sorted(my_list1, key=lambda x: x[0])

result = []
# 按姓名分组,遍历每个组
for name, group in groupby(sorted_list, key=lambda x: x[0]):
    total_num1 = 0
    total_num2 = 0
    # 累加当前组内的所有数值
    for item in group:
        total_num1 += item[1]
        total_num2 += item[3]
    # 把结果添加到列表中
    result.append([name, total_num1, total_num2])

print(result)

这种方法适合已经有排序需求的场景,或者需要对分组后的元素做更多操作的情况。

内容的提问来源于stack exchange,提问作者GRNearth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:39:41