📜  按对象属性颤动排序列表 (1)

📅  最后修改于: 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 列表进行稳定排序。