为什么列表.sort() 在 Python 中没有返回已排序列表?
示例
在本示例中,让我们先了解 list.sort() 的用法,然后再继续。这里,我们创建了一个列表,并使用 sort() 方法按升序对其进行排序 −
# Creating a List myList = ["Jacob", "Harry", "Mark", "Anthony"] # Displaying the List print("List = ",myList) # Sort the Lists in Ascending Order myList.sort() # Display the sorted List print("Sort (Ascending Order) = ",myList)
输出
List = ['Jacob', 'Harry', 'Mark', 'Anthony'] Sort (Ascending Order) = ['Anthony', 'Harry', 'Jacob', 'Mark']
当性能更为重要时,仅为列表创建副本进行排序将不被认为是一种好的方式,而且是浪费。因此,list.sort() 按原样对列表进行排序。此方法不会返回已排序列表。这样,当你需要已排序副本但又需要保留未排序版本时,就不会被误导而意外地覆盖列表。
相反,使用内置的 sorted() 函数返回一个新列表。此函数从提供的可迭代项中创建新列表,对其进行排序并返回它。
使用 sorted() 根据值对字典列表进行排序
示例
我们现在已使用 sorted() 方法对字典列表进行排序。
# List of dictionaries d = [ {"name" : "Sam", "marks" : 98}, {"name" : "Tom", "marks" : 93}, {"name" : "Jacob", "marks" : 97} ] # Display the Dictionary print("Dictionary = \n",d) # Sorting using values with the lambda function print("Sorted = \n",sorted(d, key = lambda item: item['marks']))
输出
('Dictionary = \n', [{'name': 'Sam', 'marks': 98}, {'name': 'Tom', 'marks': 93}, {'name': 'Jacob', 'marks': 97}]) ('Sorted = \n', [{'name': 'Tom', 'marks': 93}, {'name': 'Jacob', 'marks': 97}, {'name': 'Sam', 'marks': 98}])
广告