列表里的对象,按对象的某个属性值排序
在 Python 中,如果你想按对象的某个属性值对列表进行排序,可以使用 sorted()
或者 list.sort()
方法,并通过 key
参数指定一个函数来提取每个对象的属性值。
示例:
假设你有一个 Person
类,每个 Person
对象都有一个 age
属性,你想按照 age
对 Person
对象列表进行排序。
1. 使用 sorted()
函数
sorted()
返回一个新的排序后的列表。
class Person:def __init__(self, name, age):self.name = nameself.age = age# 创建对象列表
people = [Person('Alice', 30),Person('Bob', 25),Person('Charlie', 35)
]# 按年龄排序
sorted_people = sorted(people, key=lambda person: person.age)# 打印结果
for person in sorted_people:print(f'{person.name}: {person.age}')
输出:
Bob: 25
Alice: 30
Charlie: 35
2. 使用 list.sort()
方法
list.sort()
会直接修改原列表,且没有返回值。
people = [Person('Alice', 30),Person('Bob', 25),Person('Charlie', 35)
]# 按年龄排序(直接修改原列表)
people.sort(key=lambda person: person.age)# 打印结果
for person in people:print(f'{person.name}: {person.age}')
输出:
Bob: 25
Alice: 30
Charlie: 35
总结:
sorted()
返回一个新列表,适用于不想修改原始列表的情况。list.sort()
会就地修改原列表,适用于直接改变原列表的情况。- 使用
key
参数来指定排序依据,可以是一个函数(如lambda
)来获取对象的属性。