python list sort(key = x : (x.value1, x.valye2,x.value3)
时间: 2024-12-20 18:15:02 浏览: 6
在Python中,`sort()`方法接受一个可选的关键字参数`key`,用于自定义排序规则。当`key`是一个函数,它会被应用于列表中的每个元素,然后基于函数返回值来进行排序。如果你传递的是一个类实例`x`,并且`x`有一个方法,比如`value1`, `value2`, 和 `value3`,你可以通过点`.`或属性访问的方式来作为排序依据。
例如,假设你有一个名为`Person`的类,其中包含`age`, `name`, 和 `height`属性,你想先根据年龄排序,再根据姓名排序,最后根据身高排序,可以这样做:
```python
class Person:
def __init__(self, name, age, height):
self.name = name
self.age = age
self.height = height
# 创建一个Person对象列表
people = [
Person('Tom', 25, 180),
Person('Jerry', 30, 170),
Person('Spike', 20, 190)
]
# 使用元组作为 key 函数,元组中的顺序决定了排序优先级
people.sort(key=lambda p: (p.age, p.name, p.height))
print(people) # 按照年龄、姓名和高度的顺序排序
```
这里`lambda`表达式定义了一个匿名函数,接收一个`Person`对象`p`,并返回一个三元组`(age, name, height)`,这就是排序的依据。
阅读全文