我正在为学生创建一个算术测验。在菜单中,可以选择查看学生的分数。一旦用户(教师)选择了他们想要查看其分数的班级,他们就会从输出之前对所选班级的分数(来自文本文件)进行排序的三种方法中选择一种。
其中一种方法是让每个学生在课堂上得分最高,并按字母顺序排序(从A-Z并根据每个学生的名字)。每个学生有1到3个分数,这些分数存储在列表中。所选类的分数使用JSON从文本文件导入,并存储在字典scores
中。在字典中,每个学生的姓名(名字和姓氏,例如伊莎贝拉摩根)都是一把钥匙,每个钥匙都附在该学生的分数列表上。
我知道当我得到每个学生的最高分时,我可以使用sorted()按字母顺序对它们进行排序。但是,我无法弄清楚如何从字典中的每个学生名单中获得最高分(满分10分)。对此的帮助将非常感激。
答案 0 :(得分:1)
在不查看代码的情况下无法说出来,但是根据您的要求以及我理解的内容,这应该引导您走向一些有意义的方向。
您可以使用operator.itemgetter
:
import operator
stats = {'a':1000, 'b':3000, 'c': 100}
max(stats.iteritems(), key=operator.itemgetter(1))[0]
而不是在内存中构建新列表使用stats.iteritems()
。 max()
函数的关键参数是一个函数,用于计算用于确定如何对项目进行排名的键。
请注意,如果您要使用另一个键值对':3000这个方法只返回其中一个,即使它们都具有最大值。
>>> import operator
>>> stats = {'a':1000, 'b':3000, 'c': 100, 'd':3000}
>>> max(stats.iteritems(), key=operator.itemgetter(1))[0]
'b'