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

Python中的sorted()函数用法详解:如何对列表、字典等元素进行排序?

发布时间:2023-09-27 09:43:20

在Python中,sorted()函数用于对可迭代对象进行排序。它返回一个新的已排序的列表,而不会改变原始的可迭代对象。sorted()函数可以用于字符串、列表、元组、字典以及其他一些可迭代对象。

对列表进行排序:

可以使用sorted()函数对列表进行排序。例如:

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # 输出 [1, 1, 2, 3, 4, 5, 5, 6, 9]

sorted_numbers是已排序的新列表,而numbers列表保持不变。

对字符串进行排序:

sorted()函数也可以对字符串进行排序。默认情况下,字符串会按照字符的ASCII码进行排序。例如:

string = "hello"
sorted_string = sorted(string)
print(sorted_string)  # 输出 ['e', 'h', 'l', 'l', 'o']

排序时忽略大小写:

如果要忽略字符串的大小写进行排序,可以通过传递key参数来指定排序规则。例如:

strings = ["Apple", "banana", "cherry", "Date"]
sorted_strings = sorted(strings, key=str.lower)
print(sorted_strings)  # 输出 ['Apple', 'banana', 'cherry', 'Date']

通过传递str.lower函数作为key参数,使得字符串在排序时忽略了大小写。

按照自定义规则排序:

可以通过传递lambda函数或自定义的函数作为key参数来指定自定义的排序规则。例如:

numbers = [1, 3, 10, 2, 5]
sorted_numbers = sorted(numbers, key=lambda x: x % 3)
print(sorted_numbers)  # 输出 [3, 10, 1, 2, 5]

上述示例中,通过使用lambda函数lambda x: x % 3作为key参数,对数字列表进行了按照元素取模的排序。

对字典进行排序:

在对字典进行排序时,实际上是对字典的键进行排序。同样,可以通过key参数指定排序规则。例如:

ages = {"Alice": 25, "Bob": 33, "Claire": 28, "David": 22}
sorted_ages = sorted(ages, key=ages.get)
print(sorted_ages)  # 输出 ['David', 'Alice', 'Claire', 'Bob']

通过传递ages.get函数作为key参数,对字典的键按照对应的值进行排序。

排序的稳定性:

在排序时,sorted()函数会保持相等元素的相对顺序不变,这就是排序的稳定性。例如:

numbers = [(1, "apple"), (2, "banana"), (1, "cherry"), (2, "date")]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # 输出 [(1, 'apple'), (1, 'cherry'), (2, 'banana'), (2, 'date')]

在上述示例中,排序时按照元组的 个元素进行排序,并且保持了相等元素的相对顺序。

总结:

sorted()函数在Python中用于对可迭代对象进行排序。它返回一个新的已排序的列表,而不会改变原始的可迭代对象。可以通过传递不同的参数来指定排序规则,如忽略大小写、按照自定义规则排序等。在排序时,sorted()函数会保持相等元素的相对顺序不变,具有稳定性。