Python3中sorted函数key参数与reverse参数的深度解析

Luna
Luna
发布时间:2026-10-13 | 3人浏览过
原创

本文详细解析Python3中sorted函数的key和reverse参数用法。通过实例演示如何利用key提取比较关键字,实现复杂排序逻辑,如元组排序、字符串自定义排序及正负数混合排序,并说明Python3已取消cmp支持。

Python3 sorted函数基础参数说明

在Python3版本中,sorted函数不再支持cmp参数。

查阅Python3官方帮助文档可知:


sorted(iterable,key=None,reverse=False)

key参数接收一个函数,该函数仅接受一个元素作为输入,默认值为None。

reverse参数为布尔类型,若设为True,列表元素将按逆序排列,默认值为False。

key参数工作原理详解

重点解析key参数的工作原理:

key用于指定一个单参数函数,该函数从每个元素中提取用于比较的关键字,默认值为None。

sorted函数应用实例

示例1:


students = [('john', 'A', 15), ('jane', 'B', 12), ('dave','B', 10)]

sorted(students,key=lambda s: x[2]) #按照年龄来排序

输出结果:[('dave','B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

示例2:这是一个字符串排序案例,排序规则为:小写字母 < 大写字母 < 奇数 < 偶数。


s = 'asdf234GDSdsf23' #排序:小写-大写-奇数-偶数

print("".join(sorted(s, key=lambda x: (x.isdigit(),x.isdigit() and int(x) % 2 == 0,x.isupper(),x))))

其原理是:先比较元组的第一个值,False小于True;若相等则比较元组的下一个值,依此类推。

首先观察布尔值的排序行为:

print(sorted([True,Flase])) 的输出结果为 [False,True]。

布尔值排序时,False会排在True之前。

x.isdigit()的作用是将数字字符排在字母字符之前。

x.isdigit() and int(x) % 2 == 0的作用是确保奇数排在偶数之前。

x.isupper()的作用是在前述基础上,保证小写字母排在大写字母之前。

最后的x表示在上述条件基础上,对各类别内的数字或字母进行自然排序。

最终输出结果为:addffssDGS33224

复杂排序场景实战

示例3:这是一道常见的面试题。


list1=[7, -8, 5, 4, 0, -2, -5]

#要求1.正数在前负数在后 2.整数从小到大 3.负数从大到小

sorted(list1,key=lambda x:(x<0,abs(x)))

解题思路:首先按正负性排序(正数在前,负数在后),然后按数值大小排序。

以上关于Python3 sort和sorted函数的应用详解内容到此结束,希望能为读者提供参考,并欢迎大家继续支持本站。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表