网站首页 > 技术文章 正文
Python 的内置 sorted() 函数是一种高度灵活的工具,用于组织集合。与就地修改列表的 .sort() 方法不同,sorted() 适用于任何可迭代对象,并从任何可迭代对象的元素中返回新的排序列表,无论是列表、元组、字典,甚至是自定义对象。此函数可以处理简单和复杂的排序任务,包括涉及多个条件的任务。
sorted()函数的基础知识
默认情况下, sorted() 函数按升序对可迭代对象进行排序,并且可以使用其参数进行自定义:
- iterable 中:要排序的元素序列。
- 钥匙:用作排序比较键的函数。
- 反向:布尔值。如果设置为 True,则 iterable 将按降序排序。
sorted()的语法
sorted(iterable, key=None, reverse=False)
1. 对数字和字符串进行排序
最简单的用例是对数字和字符串进行排序:
numbers = [3, 1, 4, 1, 5, 9, 2]
sorted_numbers = sorted(numbers)
print(sorted_numbers) # Output: [1, 1, 2, 3, 4, 5, 9]
words = ['banana', 'apple', 'cherry']
sorted_words = sorted(words)
print(sorted_words) # Output: ['apple', 'banana', 'cherry']
2. 使用自定义键排序
您可以将函数传递给 key 参数以自定义排序行为。这对于复杂数据特别有用:
data = ['a5', 'a2', 'b1', 'b3', 'c2']
sorted_data = sorted(data, key=lambda x: (x[0], int(x[1:])))
print(sorted_data) # Output: ['a2', 'a5', 'b1', 'b3', 'c2']
在这里,列表首先按字母排序,然后按数字作为整数排序。
3. 按特定元素对元组进行排序
处理元组时,您可能希望根据元组的一个元素进行排序:
tuples = [(1, 'c'), (2, 'a'), (1, 'b')]
sorted_tuples = sorted(tuples, key=lambda x: x[1])
print(sorted_tuples) # Output: [(2, 'a'), (1, 'b'), (1, 'c')]
4. 反向排序
要按降序对迭代对象进行排序,请执行以下操作:
sorted_numbers = sorted(numbers, reverse=True)
print(sorted_numbers) # Output: [9, 5, 4, 3, 2, 1, 1]
sorted() 在数据项目中的实际应用
sorted() 在数据分析中非常有用,用于在处理或呈现之前对数据集进行排序。例如,按多个键对字典列表进行排序:
employees = [
{'name': 'Alice', 'age': 30, 'salary': 80000},
{'name': 'Bob', 'age': 25, 'salary': 50000},
{'name': 'Charlie', 'age': 35, 'salary': 120000},
]
# Sort by age, then by salary if ages are the same
sorted_employees = sorted(employees, key=lambda x: (x['age'], x['salary']))
print(sorted_employees)
在处理需要考虑多个维度的结构化数据时,此方法特别有用。
sorted() 函数是 Python 中的一个多功能工具,对于基本和高级排序操作都是必不可少的。它支持各种可迭代对象,并且可以使用 key 和 reverse 参数进行广泛自定义。通过掌握 sorted(),您可以有效地以结构化和有意义的顺序处理、操作和呈现数据,这在数据驱动项目中至关重要。
- 上一篇: 人人都能看懂的「迭代器、生成器」入门指南
- 下一篇: 玩转Python—循环语句使用教程
猜你喜欢
- 2025-01-15 Python流程控制
- 2025-01-15 一文搞懂Python迭代器和生成器
- 2025-01-15 Python生成器详解 | 投稿
- 2025-01-15 Python逆序输出的3种方法,你了解嘛
- 2025-01-15 从原理到实战,一份详实的 Scrapy 爬虫教程
- 2025-01-15 有效提升Python代码性能的三个层面
- 2025-01-15 玩转Python—循环语句使用教程
- 2025-01-15 人人都能看懂的「迭代器、生成器」入门指南
- 2025-01-15 全网最详细的Python自动化测试+邮件推送+企业微信推送+Jenkins
- 2025-01-15 如何更好的理解Python 生成器和迭代器,yield语句
- 05-25Python 3.14 t-string 要来了,它与 f-string 有何不同?
- 05-25Python基础元素语法总结
- 05-25Python中的变量是什么东西?
- 05-25新手常见的python报错及解决方案
- 05-2511-Python变量
- 05-2510个每个人都是需要知道Python问题
- 05-25Python编程:轻松掌握函数定义、类型及其参数传递方式
- 05-25Python基础语法
- 257℃Python短文,Python中的嵌套条件语句(六)
- 257℃python笔记:for循环嵌套。end=""的作用,图形打印
- 256℃PythonNet:实现Python与.Net代码相互调用!
- 251℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 251℃Python实现字符串小写转大写并写入文件
- 106℃原来2025是完美的平方年,一起探索六种平方的算吧
- 90℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 81℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)