从文本文件中按 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)
我正在尝试按学生从最高到最低对 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)