以下是一个示例代码,演示如何按照两个属性对对象列表进行排序:
class Student:
def __init__(self, name, age, grade):
self.name = name
self.age = age
self.grade = grade
def __repr__(self):
return f"Student(name={self.name}, age={self.age}, grade={self.grade})"
students = [
Student("John", 18, "A"),
Student("Alice", 20, "B"),
Student("Bob", 19, "C"),
Student("Charlie", 18, "A"),
Student("David", 19, "A"),
]
# 按照年龄和成绩进行排序
sorted_students = sorted(students, key=lambda s: (s.age, s.grade))
for student in sorted_students:
print(student)
输出结果:
Student(name=John, age=18, grade=A)
Student(name=Charlie, age=18, grade=A)
Student(name=David, age=19, grade=A)
Student(name=Bob, age=19, grade=C)
Student(name=Alice, age=20, grade=B)
在示例中,我们定义了一个Student
类来表示学生对象。每个学生有姓名、年龄和成绩三个属性。
然后,我们创建了一个包含多个学生对象的列表students
。
使用sorted()
函数对students
列表进行排序,传入一个key
参数,指定排序的规则。在这里,我们使用lambda
函数来指定排序规则。lambda
函数接收一个学生对象s
作为参数,返回一个由年龄和成绩组成的元组(s.age, s.grade)
,这样就可以按照年龄和成绩进行排序。
最后,我们遍历排序后的学生列表,打印每个学生对象的信息。