📜  python排序两个键 - Python(1)

📅  最后修改于: 2023-12-03 15:19:33.617000             🧑  作者: Mango

以python对两个键进行排序

在python中,对多个键进行排序时,我们可以使用lambda函数和sorted()函数。

首先,让我们假设有一个包含多个字典的列表。我们要按其中两个键(例如'age'和'name')的值将列表中的字典排序。

    data = [{'name': 'Alice', 'age': 25},
            {'name': 'Bob', 'age': 20},
            {'name': 'Charlie', 'age': 30},
            {'name': 'David', 'age': 25}]
按一个键进行排序

首先,我们可以使用lambda函数和sorted()函数按一个键进行排序。例如,按字典中的'age'键进行升序排序:

    sorted_data = sorted(data, key=lambda x: x['age'])

这将返回一个按照'age'键升序排列的字典列表。

按多个键进行排序

现在,我们想要按两个键('age'和'name')来排序。我们仍然可以使用lambda函数和sorted()函数。然而,这次我们要指定多个排序键。

    sorted_data = sorted(data, key=lambda x: (x['age'], x['name']))

这样将按照'age'键进行排序,如果有两个字典的'age'值相同,则使用'name'键进行排序。这将返回一个按照'age'键升序排列,'age'值相同时按照'name'键升序排列的字典列表。

降序排序

默认情况下,sorted()函数将按升序排序。如果要按降序排序,则可以将'reverse'参数设置为'True'。

例如,按'age'键进行降序排序:

    sorted_data = sorted(data, key=lambda x: x['age'], reverse=True)

这将返回一个按照'age'键降序排列的字典列表。

完整代码
    data = [{'name': 'Alice', 'age': 25},
            {'name': 'Bob', 'age': 20},
            {'name': 'Charlie', 'age': 30},
            {'name': 'David', 'age': 25}]

    # 按一个键进行排序
    sorted_data = sorted(data, key=lambda x: x['age'])

    # 按多个键进行排序
    sorted_data = sorted(data, key=lambda x: (x['age'], x['name']))

    # 降序排序
    sorted_data = sorted(data, key=lambda x: x['age'], reverse=True)

以上就是使用python对两个键进行排序的方法。