如果列表中有复杂的数据结构,如何指定多个排序关键字?
时间: 2024-09-22 18:05:17 浏览: 32
在Python中,如果你有一个包含复杂数据结构(如字典或自定义对象)的列表,并需要按照其中的几个属性进行排序,你可以通过`sorted()`函数结合`key`参数来实现。`key`参数接受一个函数,这个函数会用于提取每个元素的关键字值。
例如,假设你有一个Person对象列表,每个人都有姓名(name)和年龄(age),你可以这样做:
```python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
# 创建一个Person对象列表
people = [Person('Alice', 25), Person('Bob', 30), Person('Charlie', 20)]
# 指定多个排序关键字,先按年龄升序,然后按姓名字母顺序
sorted_people = sorted(people, key=lambda x: (x.age, x.name))
```
在这个例子中,`lambda x: (x.age, x.name)`是一个匿名函数,它接收一个Person对象并返回一个元组,第一个元素是年龄,第二个元素是姓名。`sorted()`会首先按照元组的第一个元素(即年龄)排序,如果第一个元素相同,则依据第二个元素(姓名)进行排序。
阅读全文