【发布时间】:2015-05-31 14:16:44
【问题描述】:
我有一个字典,其中键是名称,值是最多 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))
【问题讨论】:
标签: python sorting python-3.x dictionary