专业编程基础技术教程

网站首页 > 基础教程 正文

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

ccvgpt 2024-07-26 00:56:10 基础教程 7 ℃

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

函数的基础知识sorted()

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

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

  • iterable:要排序的元素序列。
  • key:用作排序比较键的函数。
  • reverse:布尔值。如果设置为 True ,则可迭代对象按降序排序。

语法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() ,您可以以结构化且有意义的顺序有效地处理、操作和呈现数据,这在数据驱动型项目中至关重要。

最近发表
标签列表