📜  基于多个键的python排序 - Python(1)

📅  最后修改于: 2023-12-03 14:51:36.066000             🧑  作者: Mango

基于多个键的 Python 排序

在 Python 中,我们可以使用 sorted() 函数和 sort() 方法对列表进行排序。但当需要对多个键进行排序时,可能需要一些额外的操作。

在本文中,我们将介绍如何使用 Python 对多个键进行排序。

1. 排序单个键

首先,我们来看一下如何对单个键进行排序。假设我们有一个列表 lst,其中包含多个元素,每个元素都包含一个属性 name

lst = [
    {'name': 'Alice', 'age': 25},
    {'name': 'Bob', 'age': 20},
    {'name': 'Charlie', 'age': 30},
]

我们可以使用 sorted() 函数或 sort() 方法对 lst 进行排序:

sorted_lst = sorted(lst, key=lambda x: x['name'])
lst.sort(key=lambda x: x['name'])

这将按照 name 属性对列表进行排序。如果我们要按照年龄进行排序,则可以将 key 函数改为根据 age 属性排序:

sorted_lst = sorted(lst, key=lambda x: x['age'])
lst.sort(key=lambda x: x['age'])
2. 排序多个键

现在,我们来看一下如何对多个键进行排序。假设我们有一个列表 lst,其中包含多个元素,每个元素都包含 nameage 两个属性:

lst = [
    {'name': 'Alice', 'age': 25},
    {'name': 'Bob', 'age': 20},
    {'name': 'Charlie', 'age': 30},
    {'name': 'David', 'age': 25},
]

如果我们要按照 name 属性排序,然后按照 age 属性排序,我们可以使用以下代码:

sorted_lst = sorted(lst, key=lambda x: (x['name'], x['age']))
lst.sort(key=lambda x: (x['name'], x['age']))

这里,我们将 key 函数改为返回一个元组 (name, age),将按照 name 属性进行排序,如果 name 相同,再按照 age 属性进行排序。

3. 反向排序

如果我们需要对列表进行反向排序,则可以使用 reverse=True 参数。例如,要按照 name 属性逆序排序,可以使用以下代码:

sorted_lst = sorted(lst, key=lambda x: x['name'], reverse=True)
lst.sort(key=lambda x: x['name'], reverse=True)
4. 结论

在 Python 中,我们可以使用 sorted() 函数和 sort() 方法对多个键进行排序。使用 key 函数返回一个元组,可以按照多个属性进行排序。使用 reverse=True 参数可以进行反向排序。

希望本文能够帮助你更好地进行 Python 编程。