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

如何合并Python嵌套列表并去重,同时累加同学生同科目分数?

解决Python嵌套列表中同一学生同一科目分数累加问题

给定如下嵌套列表(元素依次为学生姓名、考试分数、科目):

student_scores = [['jake', '100', 'science'], ['sam', '200', 'math'], ['jake', '100', 'science'], ['sam', '200', 'science']]

我们需要实现的效果是:同一学生同一科目的分数累加,去除重复项,最终输出:

[['jake', '200', 'science'], ['sam', '200', 'math'], ['sam', '200', 'science']]

实现思路

用字典做分组统计:以**(姓名, 科目)**作为唯一标识键,对应的值存储该组合的总分。遍历原列表时更新字典中的总分,最后将字典转换为目标格式的嵌套列表。

完整代码

# 原列表,避免用list作为变量名(覆盖内置类型)
student_scores = [['jake', '100', 'science'], ['sam', '200', 'math'], ['jake', '100', 'science'], ['sam', '200', 'science']]

# 初始化字典用于统计总分
score_dict = {}

for name, score_str, subject in student_scores:
    # 把分数字符串转成整数以便累加
    score = int(score_str)
    # 用(姓名, 科目)作为唯一键
    key = (name, subject)
    if key in score_dict:
        # 已有记录则累加分数
        score_dict[key] += score
    else:
        # 无记录则初始化总分
        score_dict[key] = score

# 把字典转换为目标格式的嵌套列表
result = [[name, str(total_score), subject] for (name, subject), total_score in score_dict.items()]

print(result)

代码说明

  • 遍历过程中需将分数从字符串转为整数,才能进行数值累加计算
  • 元组(name, subject)作为字典键,确保每个学生+科目组合唯一
  • 最后通过列表推导式,将字典的键值对转换回要求的字符串分数格式嵌套列表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 22:06:35