python的sorted函数

发布时间 2023-09-12 18:19:16作者: 海_纳百川

sorted 函数用于对可迭代对象进行排序。你可以使用 sorted 函数来按照默认的升序顺序对元素进行排序,也可以使用 key 参数来指定一个自定义的排序关键字函数。以下是 sorted 函数的基本用法以及关于 key 参数的详细说明:

基本用法:

sorted(iterable, key=None, reverse=False)
  • iterable:要排序的可迭代对象,例如列表、元组或字符串。
  • key(可选):一个函数,用于生成排序的关键字。默认为 None,表示按照元素的原始值排序。
  • reverse(可选):一个布尔值,控制排序顺序。如果设置为 True,则降序排序(从大到小),默认为 False,即升序排序(从小到大)。

示例使用 sorted 函数:

# 示例1:按默认升序排序
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_numbers = sorted(numbers)
# sorted_numbers 现在包含 [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

# 示例2:按照字符串长度排序
words = ["apple", "banana", "cherry", "date"]
sorted_words = sorted(words, key=len)
# sorted_words 现在包含 ["date", "apple", "cherry", "banana"]

在示例2中,我们使用了 key 参数,将 len 函数作为关键字函数,以便按照字符串的长度进行排序。这意味着在排序时,sorted 函数会根据每个元素通过 len 函数生成的值进行比较。

,经常将 lambda 表达式与 key 参数搭配使用,特别是在需要自定义排序规则时非常有用。通过 lambda 表达式,你可以定义一个匿名函数来生成排序关键字,而不必显式定义一个命名函数。这使得代码更简洁和紧凑。

下面是一个示例,演示了如何使用 lambda 表达式和 key 参数来对列表中的字典按照特定的键值进行排序:

data = [
    {'name': 'Alice', 'age': 30},
    {'name': 'Bob', 'age': 25},
    {'name': 'Eve', 'age': 35}
]

# 使用 lambda 表达式和 key 对字典列表按照 'age' 键进行排序
sorted_data = sorted(data, key=lambda x: x['age'])

# sorted_data 现在包含按照 'age' 键升序排序的字典列表
# [{'name': 'Bob', 'age': 25}, {'name': 'Alice', 'age': 30}, {'name': 'Eve', 'age': 35}]

在上面的示例中,我们使用 lambda 表达式定义了一个匿名函数,该函数接受一个字典并返回 'age' 键的值,这个函数作为 key 参数传递给 sorted 函数。这样,sorted 函数就会按照 'age' 键的值对字典列表进行排序。