欢迎访问宙启技术站
智能推送

Python中的sorted()函数:排序及自定义排序规则

发布时间:2023-07-02 22:04:06

sorted()是Python内置的函数,用于对列表、字典、字符串等可迭代对象进行排序操作。它的基本用法非常简单,只需传入一个可迭代对象,sorted()函数会返回一个新的已排序的列表。

下面是一些基本的使用示例:

1. 对列表进行排序:

nums = [5, 2, 10, 1, 7]
sorted_nums = sorted(nums)
print(sorted_nums)  # 输出:[1, 2, 5, 7, 10]

2. 对字符串进行排序:

s = "hello world"
sorted_s = sorted(s)
print(sorted_s)  # 输出:[' ', 'd', 'e', 'h', 'l', 'l', 'l', 'o', 'o', 'r', 'w']

3. 对字典进行排序:

d = {'b': 2, 'a': 1, 'c': 3}
sorted_d = sorted(d)
print(sorted_d)  # 输出:['a', 'b', 'c']

通过上述的示例可以看出,sorted()函数默认使用对象的自然顺序进行排序。但是在某些情况下,我们可能需要根据自定义的排序规则进行排序。

自定义排序规则可以通过传入一个key函数来实现。该函数接收可迭代对象的每个元素作为参数,返回一个用于排序的值。

例如,我们有一个列表,列表中的元素是字符串,希望按照字符串的长度进行排序,可以使用以下代码:

words = ['apple', 'banana', 'orange', 'kiwi']
sorted_words = sorted(words, key=len)
print(sorted_words)  # 输出:['kiwi', 'apple', 'banana', 'orange']

在上述代码中,key参数传入了len函数,将字符串的长度作为排序的依据。

除了内置函数,我们还可以自定义一个函数来作为key函数。下面是一个简单的自定义排序规则的示例:

students = [
    {'name': 'Tom', 'score': 95},
    {'name': 'Alice', 'score': 85},
    {'name': 'Bob', 'score': 90}
]

def get_score(student):
    return student['score']

sorted_students = sorted(students, key=get_score)
print(sorted_students)

在上述代码中,我们定义了一个get_score函数,作为key函数传入sorted()函数中。该函数接收一个学生字典作为参数,返回学生的分数,用于排序。

除了key参数外,sorted()函数还提供了其他可选的参数,例如reverse。通过设置reverse为True,可以实现倒序排序。以下是一个示例:

nums = [5, 2, 10, 1, 7]
sorted_nums_reverse = sorted(nums, reverse=True)
print(sorted_nums_reverse)  # 输出:[10, 7, 5, 2, 1]

综上所述,sorted()函数是Python中非常强大和灵活的排序函数。可以根据默认的自然顺序进行排序,也可以通过传入自定义的key函数实现复杂的排序规则。此外,还可以使用其他参数进行逆序排序等操作。