内置的列表类型提供了名叫sort的方法,可以根据多项指标给list实例中的元素排序。在默认情况下,sort方法总是按照自然升序排列列表内的元素。
numbers = [3, 1, 4, 2, 5]
numbers.sort(reverse=True) # 降序
print(numbers)
# 输出: [5, 4, 3, 2, 1]
numbers.sort() # 生序
print(numbers)
# 输出: [1, 2, 3, 4, 5]
# 支持对字符串按字母表排序
fruits = ['banana', 'apple', 'orange', 'kiwi']
fruits.sort()
print(fruits)
# 输出: ['apple', 'banana', 'kiwi', 'orange']
如何需要针对对象的某个属性排序呢?
我们可以把这样的排序逻辑定义成函数,然后将这个函数传给sort方法的key参数。key所表示的函数本身应该带有一个参数,这个参数指代列表中有待排序的对象。
# 对元组列表按照某个元素进行排序
students = [('Alice', 19), ('Bob', 20), ('Charlie', 18)]
students.sort(key=lambda x: x[1]) # 按照年龄升序
print(students)
# 输出: [('Charlie', 18), ('Alice', 19), ('Bob', 20)]
# 对字典列表按照某个元素进行排序
students = [{'name': 'Alice', 'age': 19},
{'name': 'Bob', 'age': 20},
{'name': 'Charlie', 'age': 18}]
students.sort(key=lambda x: x['name'], reverse=True) # 按照name降序
print(students)
# 输出: [{'name': 'Charlie', 'age': 18}, {'name': 'Bob', 'age': 20},
# {'name': 'Alice', 'age': 19}]