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

Python中按学生姓名求最大登顶次数并生成排名的技术问询

问题描述

我有如下二维列表,记录了每位学生考试登顶的次数:

main_record = [
    ['student1', 1],
    ['student2', 1],
    ['student2', 2],
    ['student1', 5],
    ['student3', 3]
]

还有一个包含所有唯一学生的列表:

students_enrolled = ['student1','student2','student3']

我希望基于学生的登顶次数最大值生成排名列表:

student_ranking = ['student1','student3','student2']

需要实现的逻辑等效于以下SQL查询:

select max(main_record[1]) where name = student1 >>> result = 5 
select max(main_record[1]) where name = student2 >>> result = 2
select max(main_record[1]) where name = student3 >>> result = 3

请问哪些Python内置函数可以实现该需求?

解决方案

你可以通过以下几个Python内置函数组合实现需求:

1. 统计每位学生的最大登顶次数

先用dict()创建存储容器,结合max()和dict.get()来筛选每个学生的最高登顶次数:

# 初始化字典存储学生与对应最大登顶次数
max_records = {}
for student, count in main_record:
    # 对比已有值和当前值,取最大值更新字典
    max_records[student] = max(max_records.get(student, 0), count)

这里用到的内置函数:

  • dict():创建空字典用于存储学生-最大次数的键值对
  • dict.get():安全获取字典中已有值,若学生不存在则返回默认值0
  • max():比较两个数值,保留较大的那个作为当前学生的最大次数

2. 生成排名列表

用sorted()函数结合匿名lambda表达式,按最大登顶次数降序排序学生列表:

student_ranking = sorted(students_enrolled, key=lambda s: max_records[s], reverse=True)

这里用到的内置函数:

  • sorted():对列表进行排序,支持自定义排序规则
  • lambda:匿名函数,快速定义排序时的取值逻辑(从字典中提取对应学生的最大次数)

运行上述代码后,student_ranking会得到目标结果['student1','student3','student2']。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 00:05:10