Python中的sorted()函数用法详解:如何对列表、字典等元素进行排序?
在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()函数会保持相等元素的相对顺序不变,具有稳定性。
