📅  最后修改于: 2023-12-03 15:39:48.682000             🧑  作者: Mango
本文将介绍如何按照对象属性对一个列表进行排序。这种方式也被称为稳定排序(stable sorting),因为它不会改变相等元素的相对顺序。
在 Python 中,我们可以使用 sorted()
函数来对列表进行排序。该函数接受一个可迭代对象,例如列表或元组,并根据指定的排序键(排序函数)返回一个新的排序序列。
下面是一个简单的示例,演示如何使用 sorted()
函数对一个列表进行排序:
def sort_by_name(item):
return item['name']
fruits = [
{'name': 'apple', 'price': 0.5},
{'name': 'banana', 'price': 0.25},
{'name': 'cherry', 'price': 0.1},
{'name': 'date', 'price': 0.75},
]
sorted_fruits = sorted(fruits, key=sort_by_name)
print(sorted_fruits)
该代码将按照水果的名称对列表进行排序,结果如下:
[{'name': 'apple', 'price': 0.5}, {'name': 'banana', 'price': 0.25}, {'name': 'cherry', 'price': 0.1}, {'name': 'date', 'price': 0.75}]
如果需要对多个属性进行排序,则可以定义一个排序函数,该函数按照一定的优先级比较属性。例如,下面的示例按照水果的价格和名称对列表进行排序:
def sort_by_price_and_name(item):
return (item['price'], item['name'])
fruits = [
{'name': 'apple', 'price': 0.5},
{'name': 'banana', 'price': 0.25},
{'name': 'cherry', 'price': 0.1},
{'name': 'date', 'price': 0.75},
]
sorted_fruits = sorted(fruits, key=sort_by_price_and_name)
print(sorted_fruits)
该代码将按照价格和名称对列表进行排序,结果如下:
[{'name': 'cherry', 'price': 0.1}, {'name': 'banana', 'price': 0.25}, {'name': 'apple', 'price': 0.5}, {'name': 'date', 'price': 0.75}]
如果需要对列表进行逆序排序,则可以使用 sorted()
函数的 reverse
参数。例如,下面的示例按照水果的价格对列表进行逆序排序:
def sort_by_price_descending(item):
return item['price']
fruits = [
{'name': 'apple', 'price': 0.5},
{'name': 'banana', 'price': 0.25},
{'name': 'cherry', 'price': 0.1},
{'name': 'date', 'price': 0.75},
]
sorted_fruits = sorted(fruits, key=sort_by_price_descending, reverse=True)
print(sorted_fruits)
该代码将按照价格逆序排序,结果如下:
[{'name': 'date', 'price': 0.75}, {'name': 'apple', 'price': 0.5}, {'name': 'banana', 'price': 0.25}, {'name': 'cherry', 'price': 0.1}]
本文介绍了如何按照对象属性对一个列表进行排序。我们学习了 sorted()
函数的基本用法、多级排序和逆序排序。通过这些示例,你应该掌握如何对 Python 列表进行稳定排序。