一、基础用法
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函数的用法,可以大大提高我们代码的效率和可读性。