Sorting 我需要修改我的代码,使其从最高到最低显示

Sorting 我需要修改我的代码,使其从最高到最低显示,sorting,python-3.x,Sorting,Python 3.x,到目前为止,在我的代码中,我这样做是为了显示平均值,并且可以按照字母顺序对学生进行排序。然而,我需要修改我的代码,以便结果可以从最高存储到最低,但我正在努力解决这个问题 在我的文本文件中,它如下所示: 名称,3,4,5 2名称,5,6,7 3名称,3,4,5 每个名字都不一样 这是我目前的代码: class Student: def __init__(self, name, marks): self.name = name self.marks = mar

到目前为止,在我的代码中,我这样做是为了显示平均值,并且可以按照字母顺序对学生进行排序。然而,我需要修改我的代码,以便结果可以从最高存储到最低,但我正在努力解决这个问题

在我的文本文件中,它如下所示: 名称,3,4,5
2名称,5,6,7
3名称,3,4,5

每个名字都不一样

这是我目前的代码:

class Student:
    def __init__(self, name, marks):
        self.name = name
        self.marks = marks
    def avg_mark(self):
        return sum(self.marks)/len(self.marks)
    def __str__(self):
        return '{0}: {1}, {2}'.format(self.name, self.marks,     self.avg_mark())

def load_grades(filename):
    fd = open(filename, 'r')
    f = {}
    for line in fd:
        split = line.split(',')
        key = split[0]
        marks = [int(n) for n in split[1:]]
        try:
           f[key] += marks
        except KeyError:
            f[key] = marks
    students = []
    for key, values in f.items():
        students.append(Student(key, values[-3:]))
    return students

def sort_by_name(students):
    def get_name(student):
      return student.name
    students = sorted(students, key=get_name)
    return students

def sort_by_avg(students):
    def get_avg(student):
        return student.avg_mark()
    students = sorted(students, key=get_avg)
    return students


again = True

while again:
    class_num =  input ('Which class do you want to view 1,2 or 3?')
    print('please input a, b or c')
    print('a)Alphabeically')
    print('b)average')
    print('c)highest to lowest')
    sort = input ('how would you like to view it:')

    if class_num =="1" and sort =="a":
        students = load_grades('class1.txt')
        students = sort_by_name(students)
    elif class_num =="1" and sort =="b":
        students = load_grades('class1.txt')
        students = sort_by_avg(students)

    for student in students:
        print(student)


    Again=input('Do you want to view another class yes or no?')
    again = (Again=='yes')

print('bye')
我希望这样,当按下c键时,数字从高到低排序


谢谢

我不知道你说的“从最高到最低”是什么意思。例如,“5,5,5”>“5,5,4”>“5,4,4”>“5,4,3”>“5,3,3”=“4,4,3”>“4,3,3”?因此它会将每个学生的数字从高到低排序,然后将每个学生的最高分数从高到低排序。(如果有意义的话)