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

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

本文详细解析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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。