在字典中为每个学生(键)从3(值)列表中输出最高/平均分数,按从高到低排序?

2024-09-29 23:28:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了三种方法来查看一个班级学生的分数(存储在一个名为scores)的字典中。在

第一种方法是查看每个学生的最高分数(从每个学生的列表(他们的值)中获取,由1到3个分数组成),按学生姓名(他们的条目的键)按字母顺序排序。使用以下代码完成此操作:

for name, highScore in [(student,max(scores[student])) for student in sorted(scores.keys())]:
    print(name, highScore)

其输出:

^{pr2}$

第二种方法是查看每个学生的最高分数,从高到低排序。我为此创建的代码:

sortB = []
for name, highScore in [(student, max(scores[student])) for student in scores.keys()]:
    sortB += name, highScore
print(sortB)

其输出:

['David Sherwitz', 9, 'Michael Bobby', 1, 'Tyrone Malone', 6]

我希望这个输出看起来像第一个方法的输出,但是它不是?它也不是从高到低排序的。我怎么能做到呢?在

第三种方法是查看每个学生的平均分数,从高到低排序。我还没有为此创建代码,但是我认为可以修改第二个方法的代码,使其获得平均得分,但我不知道如何修改?在


Tags: 方法代码nameinfor排序keysstudent
1条回答
网友
1楼 · 发布于 2024-09-29 23:28:34

只需要在第二列上运行.sort,它可以由key=lambda x: x[1]定义:

sortB = [(n, max(s)) for n,s in scores.items()]
sortB.sort(key=lambda x: x[1], reverse=True)
for name, highScore in sortB:
    print(name, highScore)

类似地,要按平均值排序,只需将max替换为average函数:

^{pr2}$

以下是使用第一种方法和类似的编码方式进行排序:

sortA = [(n,max(s)) for n,s in scores.items()]
sortA.sort(key=lambda x: x[0])
for name, highScore in sortA:
    print(name, highScore)

相关问题 更多 >

    热门问题