尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Python 降序排序:轻松搞定列表、字典和自定义对象

Python 降序排序:轻松搞定列表、字典和自定义对象
📅 发布时间:2026/6/20 7:47:26

在 Python 中,降序排序是一个非常常见的需求。无论是对列表、字典还是自定义对象进行排序,Python 都提供了简单而强大的方法来实现降序排序。今天,就让我们一起学习如何在 Python 中实现降序排序,并分享一些实用的技巧和最佳实践。

一、列表的降序排序

(一)使用 sort() 方法

sort() 方法是列表对象的一个内置方法,用于对列表进行原地排序。通过设置参数 reverse=True,可以实现降序排序。

示例代码

# 创建一个列表
my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]# 使用 sort() 方法进行降序排序
my_list.sort(reverse=True)
print(my_list)  # 输出 [9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]

(二)使用 sorted() 函数

sorted() 是一个内置函数,用于返回一个排序后的新列表,原列表保持不变。通过设置参数 reverse=True,可以实现降序排序。

示例代码

# 创建一个列表
my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]# 使用 sorted() 函数进行降序排序
sorted_list = sorted(my_list, reverse=True)
print(sorted_list)  # 输出 [9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]

二、字典的降序排序

(一)按值降序排序

如果需要按字典的值进行降序排序,可以使用 sorted() 函数,并通过 key 参数指定排序的键值。

示例代码

# 创建一个字典
my_dict = {'Alice': 25, 'Bob': 30, 'Charlie': 20}# 按值降序排序
sorted_dict = dict(sorted(my_dict.items(), key=lambda item: item[1], reverse=True))
print(sorted_dict)  # 输出 {'Bob': 30, 'Alice': 25, 'Charlie': 20}

(二)按键降序排序

如果需要按字典的键进行降序排序,同样可以使用 sorted() 函数。

示例代码

# 创建一个字典
my_dict = {'Alice': 25, 'Bob': 30, 'Charlie': 20}# 按键降序排序
sorted_dict = dict(sorted(my_dict.items(), key=lambda item: item[0], reverse=True))
print(sorted_dict)  # 输出 {'Charlie': 20, 'Bob': 30, 'Alice': 25}

三、自定义对象的降序排序

如果需要对自定义对象进行降序排序,可以通过 attrgetter 或 itemgetter 来提取排序键值。

(一)使用 attrgetter

attrgetter 是 operator 模块中的一个函数,用于从对象中提取属性值。

示例代码

from operator import attrgetter# 定义一个类
class Person:def __init__(self, name, age):self.name = nameself.age = age# 创建一个列表
my_list = [Person('Alice', 25), Person('Bob', 30), Person('Charlie', 20)]# 按年龄降序排序
my_list.sort(key=attrgetter('age'), reverse=True)
print([person.name for person in my_list])  # 输出 ['Bob', 'Alice', 'Charlie']

(二)使用 itemgetter

itemgetter 是 operator 模块中的一个函数,用于从对象中提取键值。

示例代码

from operator import itemgetter# 创建一个列表
my_list = [{'name': 'Alice', 'age': 25}, {'name': 'Bob', 'age': 30}, {'name': 'Charlie', 'age': 20}]# 按年龄降序排序
sorted_list = sorted(my_list, key=itemgetter('age'), reverse=True)
print([person['name'] for person in sorted_list])  # 输出 ['Bob', 'Alice', 'Charlie']

四、性能分析

(一)时间复杂度

  • sort() 方法:时间复杂度为 (O(n \log n)),其中 (n) 是列表的长度。
  • sorted() 函数:时间复杂度为 (O(n \log n))。

(二)空间复杂度

  • sort() 方法:空间复杂度为 (O(1)),因为它是原地排序。
  • sorted() 函数:空间复杂度为 (O(n)),因为它返回一个新的列表。

五、最佳实践

(一)选择合适的排序方法

  • 如果需要直接修改原列表,使用 sort() 方法。
  • 如果需要保留原列表,使用 sorted() 函数。

(二)使用自定义排序

  • 使用 key 参数可以实现复杂的排序需求。
  • 使用 lambda 函数或 attrgetter、itemgetter 来提取排序键值。

(三)注意排序的稳定性

  • Python 的排序算法是稳定的,即相等的元素在排序后仍然保持原来的顺序。

六、总结

通过本文的介绍,你已经学会了如何在 Python 中实现降序排序,并了解了一些实用的技巧和最佳实践。以下是关键点总结:

  • 列表降序排序:使用 sort() 方法或 sorted() 函数,设置 reverse=True。
  • 字典降序排序:使用 sorted() 函数,通过 key 参数指定排序的键值。
  • 自定义对象降序排序:使用 attrgetter 或 itemgetter 提取排序键值。
  • 性能分析:时间复杂度为 (O(n \log n)),空间复杂度分别为 (O(1)) 和 (O(n))。
  • 最佳实践:选择合适的排序方法,使用自定义排序,注意排序的稳定性。

希望这篇文章能帮助你更好地进行数据排序。如果你在实际应用中还有其他问题或技巧,欢迎在评论区留言,我们一起探讨学习!

相关新闻

  • 第02周 预习、实验与作业:Java基础语法2、面向对象入门
  • 2025实测:6款主流公众号编辑器大比拼,解决你的排版难题!
  • 设计模式-适配器模式 - MaC

最新新闻

  • 嵌入式GUI内存设备:emWin旋转缩放与动画特效实战指南
  • 2026最新去水印技巧,视频图片都能用 - 爱上科技热点
  • CANN/GE图引擎API:IrDefInputs方法
  • 4层编译栈设计:构建企业级深度学习框架的架构解析
  • 2026南京黄金回收实力榜:经营面积超100平、配备光谱检测仪的六家机构 - 商业信息快查
  • TSN实战:基于NXP平台的确定性网络动态配置与核心技术详解

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号