按值列表的平均值对字典进行排序

用户名

我有一本字典,其中的键是名称,值是最多3个整数的列表(这些是指定人物的分数):

classScores={
    'Bob':[1, 6, 3],
    'Jim':[6, 10, 3],
    'Fred':[0, 2]
}

我需要按分数的平均值(从高到低)进行打印。我创建了一个工作代码来做到这一点:

classAverages={}
for student in classScores:
    classAverages[student]=sum(classScores[student])/len(classScores[student])
for student in sorted(classAverages, key=classAverages.get, reverse=True):
    print(student, "Average:", sum(classScores[student])/len(classScores[student]))

但是,我感觉这是低效的,因为它使用了2个for循环,因此必须经过每个学生两次。因此,我正在寻找将排序合并到第二个循环(大概是其排序函数中)的建议。


更新:我已经使用了lambda,但是我已经在for循环之前定义了它,以便我也可以使用它来打印平均值:

classAverages=lambda student: sum(classScores[student]) / len(classScores[student])
for student in sorted(classScores, key=classAverages, reverse=True):
    print(student, "Average:", classAverages(student))
马丁·彼得斯(Martijn Pieters)

您可以在key函数中计算每个学生的平均值

for student in sorted(classScores, key=lambda k: sum(classScores[k]) / len(classScores[k]), reverse=True):

但是,使用两个循环只会稍微降低效率。您只需增加每位学生的固定成本来确定订单。显示平均值时,您错过了在第二个循环中重用该平均值的机会

classAverages={}
for student in classScores:
    classAverages[student] = sum(classScores[student]) / len(classScores[student])

for student in sorted(classAverages, key=classAverages.get, reverse=True):
    print(student, "Average:", classAverages[student])

您可以遍历生成器表达式中的字典项以计算平均值,对这些平均值进行排序,然后在一个操作中全部显示计算出的平均值:

student_averages = ((sum(scores) / len(scores), s) for s, scores in classScores.items())

for average, student in sorted(student_averages, reverse=True):
    print(student, "Average:", average)

生成器(average, student)成对产生数据以简化排序(我们现在不需要akey来挑选第二个值)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

按平均值对元组进行排序

来自分类Dev

熊猫:按平均值对列进行排序

来自分类Dev

按平均值对初始数组进行排序

来自分类Dev

按列表中的最高平均值排序

来自分类Dev

按子元素的平均值排序列表?

来自分类Dev

从字典值的嵌套列表中查找列的平均值

来自分类Dev

按多个值对字典列表进行排序

来自分类Dev

在字典中查找列表的平均值

来自分类Dev

对平均值进行浮点排序

来自分类Dev

字典中的平均值(值)

来自分类Dev

列表元素按位置的平均值

来自分类Dev

按值对包含字典列表的字典进行排序

来自分类Dev

箱线图:按每个组的子集的平均值对组进行排序

来自分类Dev

按第二个元素的平均值对元组进行排序

来自分类Dev

如何根据数组中值的平均值按升序对类的实例进行排序?

来自分类Dev

python从字典的字典制作平均值列表:所有平均值相同

来自分类Dev

获取不同列表值的平均值

来自分类Dev

根据关联表下字段的平均值对列表进行排序

来自分类Dev

字典值的平均值,其中值采用列表/数组的形式。(一支)

来自分类Dev

从字典值中的嵌套列表中查找列的平均值

来自分类Dev

列表平均值

来自分类Dev

从旧字典中创建新字典,将关键年份按十年进行分组,并找到范围的平均值

来自分类Dev

返回字典列表中特定键的平均值/平均值

来自分类Dev

按一对多关系中的平均值排序

来自分类Dev

按嵌套列表的最高值对字典进行排序

来自分类Dev

使用unicode按值对列表中的字典进行排序

来自分类Dev

从字典列表中获取平均值

来自分类Dev

获取字典中列表的平均值

来自分类Dev

Python:对列表求平均值并追加到字典

Related 相关文章

热门标签

归档