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函数实现复杂的排序规则。此外,还可以使用其他参数进行逆序排序等操作。
