以下是一个使用自然排序对对象列表按多个属性进行排序的示例代码:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return f"Person(name='{self.name}', age={self.age})"
# 定义排序的主要函数
def sort_by_multiple_attributes(persons):
return sorted(persons, key=lambda x: (x.name, x.age))
# 创建对象列表
persons = [
Person("John", 25),
Person("Alice", 30),
Person("Bob", 20),
Person("Alice", 25),
Person("John", 30),
]
# 按多个属性进行排序
sorted_persons = sort_by_multiple_attributes(persons)
# 输出排序结果
for person in sorted_persons:
print(person)
这段代码定义了一个Person
类,包含name
和age
两个属性。然后,我们定义了一个sort_by_multiple_attributes
函数,它接受一个对象列表作为输入,并使用sorted
函数进行排序。在sorted
函数的key
参数中,我们使用一个lambda函数指定了排序的规则,即先按name
属性升序排序,然后按age
属性升序排序。最后,我们创建了一个对象列表persons
,并调用sort_by_multiple_attributes
函数对其进行排序,并打印排序结果。
输出结果为:
Person(name='Alice', age=25)
Person(name='Alice', age=30)
Person(name='Bob', age=20)
Person(name='John', age=25)
Person(name='John', age=30)
上一篇:按多个属性对对象进行分组
下一篇:按多个属性对对象数组进行分组