专业编程基础技术教程

网站首页 > 基础教程 正文

使用 Python 的sorted()函数对复杂可迭代对象进行排序

ccvgpt 2025-01-06 11:32:10 基础教程 3 ℃

Python 的内置 sorted() 函数是一种高度灵活的工具,用于组织集合。与就地修改列表的 .sort() 方法不同,sorted() 适用于任何可迭代对象,并从任何可迭代对象的元素中返回新的排序列表,无论是列表、元组、字典,甚至是自定义对象。此函数可以处理简单和复杂的排序任务,包括涉及多个条件的任务。

sorted()函数的基础知识

默认情况下, sorted() 函数按升序对可迭代对象进行排序,并且可以使用其参数进行自定义:

使用 Python 的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 中的一个多功能工具,对于基本和高级排序操作都是必不可少的。它支持各种可迭代对象,并且可以使用 keyreverse 参数进行广泛自定义。通过掌握 sorted(),您可以有效地以结构化和有意义的顺序处理、操作和呈现数据,这在数据驱动项目中至关重要。

Tags:

最近发表
标签列表