您的位置:

Python sorted函数,如何对列表进行排序

一、基础用法

Python中的sorted函数可以对列表进行排序。使用方法十分简单,只需要传入要排序的列表即可。

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

默认情况下,sorted会按照元素的大小升序排序。

二、自定义排序规则

sorted函数提供了一个key参数,允许我们自定义排序规则。

以列表中元素为字符串为例,我们可以按照字符串长度进行排序。

a = ['apple', 'banana', 'orange', 'kiwi']
sorted_a = sorted(a, key=lambda x: len(x))
print(sorted_a) # 输出['kiwi', 'apple', 'banana', 'orange']

我们传入了一个函数lambda x: len(x)作为key参数。这个函数的作用是返回字符串长度。sorted函数会根据我们定义的排序规则,按照字符串长度升序排序。

更进一步的,我们可以根据元素的多个属性进行排序。

students = [
    {'name': 'Jack', 'age': 18},
    {'name': 'Lucy', 'age': 17},
    {'name': 'Maggie', 'age': 20},
    {'name': 'Tom', 'age': 18}
]
sorted_students = sorted(students, key=lambda x: (x['age'], x['name']))
print(sorted_students)
# 输出[{'name': 'Lucy', 'age': 17}, {'name': 'Jack', 'age': 18}, {'name': 'Tom', 'age': 18}, {'name': 'Maggie', 'age': 20}]

我们可以看到,lambda函数中通过元组同时按照年龄和姓名的字母表顺序排序。

三、reverse参数

sorted函数有一个可选参数reverse,默认为False,用于控制排序顺序是升序还是降序。如果reverse为True,则为降序。

a = [3, 1, 4, 1, 5, 9, 2, 6]
sorted_a = sorted(a, reverse=True)
print(sorted_a) # 输出[9, 6, 5, 4, 3, 2, 1, 1]

四、案例实现

下面介绍一个排序实现案例,假设我们有一个字典列表,每个字典包含了某个商品的名称、价格和销量等信息。我们需要按照销量和价格的顺序对这些字典进行排序。

products = [
    {'name': 'apple', 'price': 5.5, 'sales': 200},
    {'name': 'banana', 'price': 3.2, 'sales': 500},
    {'name': 'orange', 'price': 4.5, 'sales': 300},
    {'name': 'kiwi', 'price': 6.0, 'sales': 100},
]
sorted_products = sorted(products, key=lambda x: (x['sales'], -x['price']), reverse=True)
print(sorted_products)
# 输出[{'name': 'banana', 'price': 3.2, 'sales': 500}, {'name': 'orange', 'price': 4.5, 'sales': 300}, {'name': 'apple', 'price': 5.5, 'sales': 200}, {'name': 'kiwi', 'price': 6.0, 'sales': 100}]

我们可以看到,排序结果按照销量和价格的顺序排序,销量高的优先,当销量相同时,价格低的优先。

总结

Python的sorted函数是一个十分强大的排序函数,可以通过传入不同的参数实现不同的排序需求。掌握sorted函数的用法,可以大大提高我们代码的效率和可读性。