首页 >> 速报 > 严选问答 >

问python sorted 函数 排序用法深度讲解

2026-11-11 07:37:25

答

python sorted 是内置全局排序函数,它最大特点是不会修改原列表,而是生成一个全新排好序的可迭代对象,默认是升序排序,支持列表 元组 字符串 字典等可迭代对象,和列表自带的 list.sort 方法有本质区别,list.sort 是原地排序直接改动原数据,没有返回值,sorted 会返回新对象,很多新手经常把两者搞混,做题或者写业务代码的时候,误以为 sorted 会改动原始数据,导致后续逻辑出错,sorted 三个核心参数是 key reverse,还可以传入自定义排序规则,不管是数字排序,还是按字典里面某个字段排序,字符串按长度排序,都可以通过 key 参数实现,这也是 sorted 最强大的地方,reverse 设置为 True 就切换成降序,默认 False 代表升序,理解参数之后,复杂嵌套数据排序都可以直接调用 sorted 完成,不需要自己手写冒泡选择这类基础排序算法。

一 基础语法与参数说明

语法格式 sorted (iterable, key=None, reverse=False)

iterable 待排序的可迭代对象,可以是列表 元组 集合 生成器 字符串

key 可选参数,传入一个函数,sorted 会先用这个函数处理每一个元素,再按照处理之后的结果做排序,不会改动原元素本身

reverse 布尔值,默认 False 升序,改成 True 就是降序

返回值 返回排序完成之后的新列表,注意不管输入是什么可迭代对象,sorted 最终返回类型都是列表

二 基础用法对照表

排序场景代码写法排序结果特点
数字列表升序sorted(nums)从小到大,原列表不变
数字列表降序sorted(nums, reverse=True)从大到小
按元素长度排序sorted(str_list, key=len)按字符串长度从小到大
字典按值排序sorted(dic.items(), key=lambda x:x[1])根据字典 value 排序
元组列表按第二个元素排序sorted(tuple_list, key=lambda x:x[1])指定元组下标字段排序

三 详细实操步骤

第一步准备待排序可迭代数据,比如数字列表,字符串列表,或者嵌套元组字典数据。

第二步基础排序直接调用 sorted 传入数据,接收返回的新排序列表,原数据保持原样。

第三步如果需要自定义排序规则,编写 key 对应的函数,一般直接使用 lambda 匿名函数,提取想要排序的关键字段。

第四步需要降序的时候增加 reverse=True 参数。

第五步校验结果,对比原始数据,确认原数据没有被修改,新列表排序符合预期。

基础示例代码

nums = [5,2,9,1]

new_nums = sorted (nums)

print (new_nums) 输出 [1,2,5,9]

print (nums) 原列表仍然是 [5,2,9,1]

字典排序示例

data = {"a":3,"b":1,"c":2}

res = sorted (data.items (), key=lambda x:x [1])

四 深度要点与易错点

稳定性,python 的 sorted 是稳定排序,也就是相等关键字的元素,排序之后保留原本的先后顺序,这个特性在多级排序的时候非常有用。

和 list.sort 区别,list.sort 原地修改原列表,返回 None,sorted 生成新列表,原数据不动,如果后续还要使用原始未排序数据,优先选 sorted。

key 函数执行逻辑,key 函数是对每一个元素单独计算排序依据,不是对整个序列计算,很多新手会理解错误。

多条件排序,key 可以返回元组,实现先按第一个条件升序,再按第二个条件降序,比如 key=lambda x:(x [0], -x [1])。

不能排序的情况,如果元素类型不统一,比如列表里面同时有数字和字符串,直接 sorted 会报类型比较错误,需要通过 key 统一转换成可比较类型。

综合来看 python sorted 函数是 python 内置通用排序工具,核心优势是不修改原数据,支持 key 自定义排序规则和 reverse 升降序切换,返回全新排序列表,适合绝大多数可迭代对象排序场景,区分开 sorted 和 list.sort,掌握 lambda 配合 key 的写法,就能处理多级排序 字典排序这类复杂需求。

【常见问题】

问题 1 python sorted 函数 和 list.sort 有什么区别

回答 1 python sorted 函数是生成新排序列表,原数据保持不变,list.sort 是原地排序直接修改原列表并且返回 None,python sorted 函数适合还需要保留原始数据的场景。

问题 2 python sorted 函数 可以对字典直接排序吗

回答 1 python sorted 函数不能直接对字典本身排序,需要先用 items 转换成键值对元组,再通过 key 指定按照 key 或者 value 排序,python sorted 函数排序之后返回的是元组组成的新列表。

问题 3 python sorted 函数 reverse 参数作用是什么

回答 1 python sorted 函数里面 reverse 默认 False 是升序,设置 reverse=True 就变成降序,使用 python sorted 函数的时候,不需要自己反转列表,直接修改 reverse 参数即可。

问题 4 python sorted 函数 是稳定排序吗

回答 1 python sorted 函数属于稳定排序,关键字相同的元素排序之后保持原来相对顺序,做多级排序的时候,python sorted 函数这个稳定特性经常会用到。

【免责申明】

本文 python sorted 函数相关内容仅作为 python 语法教学参考,不同 python 版本排序底层实现细节可能存在细微差异,实际开发请以官方 python 文档为准,本内容不替代项目业务逻辑设计,因代码误用造成程序报错或者业务结果错误本文不承担责任。

 

相关阅读

最新文章