Python中如何实现从学生字典集合返回最高平均成绩学生的函数
实现方案
- 核心目标是编写固定接收4个学生字典作为入参的函数,筛选出其中平均成绩最高的学生并返回
- 现有
create_student生成的标准化字典中,media字段直接存储了学生的平均成绩,无需额外重复计算,可直接作为对比依据 - Python内置的
max()函数支持通过key参数自定义对比规则,是实现该需求最简洁高效的方式,无需手动编写循环做大小判断
完整可运行代码
def create_student(nom: str, cod: str, gen: str, carr: str, media: float, ssc: float) -> dict: dic_student = {"name": nom, "code": cod, "sex": gen, "career": carr, "media": media, "ssc": ssc} return dic_student # 目标函数:接收4个学生字典作为入参,返回平均成绩最高的学生 def get_top_student(stu1: dict, stu2: dict, stu3: dict, stu4: dict) -> dict: # 以media字段值作为对比排序的依据,选出最大值对应的学生 return max(stu1, stu2, stu3, stu4, key=lambda student: student["media"]) # Main program student1 = create_student("Juan Pérez", "201824736", "male", "Biology", 3.78, 0.7) student2 = create_student("Ana Gavalda", "201724736", "female", "political science", 4.25, 3.5) student3 = create_student("Bastien Bosa", "201815217", "male", "Economy", 3.21, 2.3) student4 = create_student("Catalina Gómez", "201715400", "female", "Art", 3.8, 4) # 调用函数获取最高平均成绩的学生 top_student = get_top_student(student1, student2, student3, student4) print(f"平均成绩最高的学生为:{top_student['name']},对应平均成绩{top_student['media']}")
可调优说明
- 如果后续需要结合
ssc字段计算综合评分(比如按权重折算后对比),只需要修改max函数里的key逻辑即可。例如综合分规则为media占80%、ssc占20%时,只需将lambda表达式改为lambda student: student["media"] * 0.8 + student["ssc"] * 0.2,无需调整函数整体结构 - 本次示例中四个学生的平均成绩分别为3.78、4.25、3.21、3.8,函数运行后会自动返回
Ana Gavalda对应的学生字典
内容的提问来源于stack exchange,提问作者Santiago Ramos Vargas
相关产品推荐
相关产品推荐

