在Python中,`key`函数通常用于排序操作,它可以指定一个函数,该函数会对列表中的每个元素进行处理,然后根据处理后的结果进行排序。`key`参数可以是一个函数或者一个`lambda`表达式。
1. 对列表进行排序:
```python
使用内置函数len作为key参数
li = ['apple', 'banana', 'orange', 'kiwi']
li.sort(key=len)
print(li) 输出:['kiwi', 'apple', 'orange', 'banana']
使用lambda函数作为key参数
li = [{'name': 'John', 'age': 25}, {'name': 'Jane', 'age': 28}, {'name': 'Bob', 'age': 20}]
li.sort(key=lambda x: x['age'])
print(li) 输出:[{'name': 'Bob', 'age': 20}, {'name': 'John', 'age': 25}, {'name': 'Jane', 'age': 28}]
2. 在`max`和`min`函数中使用`key`参数:
```python
获取列表中的最大值
lst = [{'age': 20}, {'age': 23}]
print(max(lst, key=lambda x: x['age'])) 输出:{'age': 23}
获取字典中值最大的键
salaries = {'jasn': 30090, 'nancy': , 'jack': 10000, 'nick': 2090}
print('工资最多的人是:', max(salaries, key=lambda x: salaries[x])) 输出:工资最多的人是: nancy
3. 对字符串集合根据其中不同字母的数量进行排序:
```python
strings = ['aaaa', 'foo', 'abab', 'bar', 'card']
strings.sort(key=lambda x: len(set(list(x))))
print(strings) 输出:['aaaa', 'foo', 'abab', 'bar', 'card']
4. 对自定义对象列表根据属性进行排序:
```python
class Car():
def __init__(self, carname, oilcp100km, price):
self.carname, self.oilcp100km, self.price = carname, oilcp100km, price
def __repr__(self):
return str(self.__dict__)
car1, car2, car3 = Car('爱丽舍', 8, 10), Car('凯美瑞', 7, 27), Car('科帕奇', 12, 23)
cars = [car1, car2, car3]
cars.sort(key=lambda x: x.price) 根据售价进行排序
print(cars) 输出:[Car(carname='凯美瑞', oilcp100km=7, price=27), Car(carname='爱丽舍', oilcp100km=8, price=10), Car(carname='科帕奇', oilcp100km=12, price=23)]
使用`key`函数可以灵活地对数据结构进行排序和处理