Python中sort
函数的key
参数用于自定义排序规则,通过指定一个函数来决定元素的排序依据。以下是关键要点:
一、基本概念
-
作用 :
key
参数接受一个函数,该函数会被应用到列表的每个元素上,返回值作为排序的关键字。 -
默认行为 :若不提供
key
参数,列表将按元素的自然顺序(如数字升序、字符串字典序)排序。
二、使用方式
-
简单函数
直接传递内置函数(如
len
、int
),实现基础排序。例如按字符串长度排序: $$ \text{my_list} = ['apple', 'banana'] \ \text{my_list.sort(key=len)} \ $$输出:
['date', 'apple']
。 -
匿名函数(lambda表达式)
使用
lambda
快速定义排序规则。例如按元组第二个元素排序: $$ \text{my_list} = [(1, 5), (3, 2)] \ \text{my_list.sort(key=lambda x: x)} \ $$输出:
[(3, 2), (1, 5)]
。 -
自定义函数
定义完整函数作为
key
参数。例如按字典值排序: $$ \text{my_dicts} = [{'name': 'Alice', 'age': 25}, {'name': 'Bob', 'age': 30}] \ \text{my_dicts.sort(key=lambda x: x['age'])} \ $$输出:按年龄升序排列的列表。
三、扩展功能
-
多级排序 :通过嵌套函数实现复杂规则。例如先按元组第一个元素排序,再按第二个元素排序: $$ \text{my_list} = [(1, 5), (1, 2), (2, 4)] \ \text{my_list.sort(key=lambda x: (x, x))} \ $$
-
性能优化 :使用
operator
模块中的函数(如attrgetter
)提升效率,尤其适用于对象属性排序。
四、注意事项
-
key
函数需返回可比较的值(如数字、字符串长度等)。 -
reverse
参数控制排序顺序(True
为降序,False
为升序)。
通过灵活运用key
参数,sort
函数可满足多样化排序需求,提升代码可读性和效率。