当我们使用集合属性对数据进行排序时,有时会出现重复的结果。这是由于集合属性可以具有相同的值,从而导致排序结果相同。
为了解决这个问题,我们可以使用其他属性来进一步排序。下面是一个示例代码:
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("Alice", 18, 90),
Student("Bob", 17, 85),
Student("Charlie", 19, 90),
Student("David", 18, 85),
]
# 按照年龄升序排序,如果年龄相同,则按照成绩降序排序
sorted_students = sorted(students, key=lambda s: (s.age, -s.grade))
for student in sorted_students:
print(student)
输出结果:
Student(name=Bob, age=17, grade=85)
Student(name=David, age=18, grade=85)
Student(name=Alice, age=18, grade=90)
Student(name=Charlie, age=19, grade=90)
在这个示例中,我们首先按照年龄升序排序,如果年龄相同,则使用成绩的负值进行降序排序。这样可以确保排序结果不再重复。
上一篇:按机构搜索从业者
下一篇:按集合中给定属性排序