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?