一、基礎用法
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函數的用法,可以大大提高我們代碼的效率和可讀性。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/291214.html