如何从字典中的每个列表中获取最高数字?

时间:2016-05-20 21:16:02

标签: python list python-3.x dictionary

我正在为学生创建一个算术测验。在菜单中,可以选择查看学生的分数。一旦用户(教师)选择了他们想要查看其分数的班级,他们就会从输出之前对所选班级的分数(来自文本文件)进行排序的三种方法中选择一种。

其中一种方法是让每个学生在课堂上得分最高,并按字母顺序排序(从A-Z并根据每个学生的名字)。每个学生有1到3个分数,这些分数存储在列表中。所选类的分数使用JSON从文本文件导入,并存储在字典scores中。在字典中,每个学生的姓名(名字和姓氏,例如伊莎贝拉摩根)都是一把钥匙,每个钥匙都附在该学生的分数列表上。

我知道当我得到每个学生的最高分时,我可以使用sorted()按字母顺序对它们进行排序。但是,我无法弄清楚如何从字典中的每个学生名单中获得最高分(满分10分)。对此的帮助将非常感激。

1 个答案:

答案 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'