Sort

class Student:
    def __init__(self, name, grade, age):
        self.name = name
        self.grade = grade
        self.age = age

    def __repr__(self):
        return repr((self.name, self.grade, self.age))


if __name__ == '__main__':
    a = [
        Student('Dave', 'B', 10),
        Student('Jane', 'B', 12),
        Student('Ford', 'A', 15),
        Student('Aaron', 'A', 20)
    ]
    print(sorted(a, key=attrgetter('grade', 'age')))

# 注意, 是先按grade排序, grade一样再按age排序, 并不是说, 先按grade排序了之后, 再按
# age排序, 注意这两者区别...

>>> [('Ford', 'A', 15), ('Aaron', 'A', 20), ('Dave', 'B', 10), ('Jane', 'B', 12)]

# 这下面是,  先按grade排序了之后, 再按age排序

    print(sorted(sorted(a, key=attrgetter('grade')), key=attrgetter('age')))
>>> [('Dave', 'B', 10), ('Jane', 'B', 12), ('Ford', 'A', 15), ('Aaron', 'A', 20)]

Last updated

Was this helpful?