从文本文件中按 Python 中的最高到最低排序平均值

Sorting averages by highest to lowest in Python from text files

我正在尝试按学生从最高到最低对 class 的平均分数进行排序。

到目前为止,这是我的代码:

with open("class.txt") as f:
    d = {}

    for line in f:
        column = line.split(":")
        names = column[0]
        scores = int(column[1].strip())

        count = 0
        while count < 3:
            d.setdefault(names, []).append(scores)
            count = count + 1
    for names, v in sorted(d.items()):
        average = (sum(v)/len(v))
        print(names,average)
    averages=[]
    averages.append(average)

我已经计算出平均值,但是,我仍然坚持如何将这些平均值按最高到最低排序,这是我尝试过的方法

list = sorted(averages, key=lambda tup: tup[1], reverse=True)

然而,它给出了错误..

TypeError: 'float' object is not subscriptable

我还注意到它不只计算最后三个分数的平均值,它计算出文本文件中学生所有分数的平均值,但是我希望它只计算出每个学生最近的三个成绩

我是 Python 的新手,我不确定自己做错了什么,所以非常感谢任何帮助,提前谢谢!

您的平均值代码有点混乱。首先创建您的 averages 列表 ,然后将您计算的每个平均值附加到该列表:

averages=[]
for name, v in d.items():
    average = (sum(v)/len(v))
    averages.append((name, average))

这会生成一个包含 (name, average) 个元组的列表,然后您可以对其进行排序:

for name, average in sorted(averages, key=lambda a: a[1], reverse=True):
    print(name, average)