📜  Python – 元组中的多列排序(1)

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

Python - 元组中的多列排序

有时候我们需要对元组中的多列进行排序。Python 提供了很简单的方法来实现多列排序。在本文中,我们将学习如何在 Python 中排序元组中的多列数据。

排序单列

在 Python 中,可以使用内置函数 sorted() 对任何可迭代的对象进行排序。此外,我们也可以在元组中使用此函数来排序单个列。

让我们看一个简单的元组并对其进行排序。

students = [('John', 22), ('Bryan', 25), ('Alex', 19), ('Chris', 30)]

sorted_students = sorted(students, key=lambda x: x[1])

print(sorted_students)

运行结果如下所示:

[('Alex', 19), ('John', 22), ('Bryan', 25), ('Chris', 30)]

在上面的代码中,我们使用内置函数 sorted() 来对这些学生的年龄进行排序。对于每个元组,我们使用 lambda 函数来指定需要排序的列(第2列)。

多列排序

如果我们要对元组中的多列进行排序,我们需要使用 key 参数的元组形式来指定多个列进行排序。

让我们看一个带有姓名、年龄和分数的学生元组结果并对其进行排序。

students = [('John', 22, 80), ('Bryan', 25, 90), ('Alex', 19, 85), ('Chris', 30, 75)]

sorted_students = sorted(students, key=lambda x: (x[1], x[2]))

print(sorted_students)

运行结果如下所示:

[('Alex', 19, 85), ('John', 22, 80), ('Bryan', 25, 90), ('Chris', 30, 75)]

在上面的代码中,我们使用 key 参数来对年龄和分数进行排序,首先是年龄,然后是分数。

多列排序和排序顺序

如果我们想要分别对每个列使用不同的排序顺序,我们可以使用 tuple()reverse 参数来完成。

例如,让我们将年龄和分数按降序排序,并将姓名按升序排序:

students = [('John', 22, 80), ('Bryan', 25, 90), ('Alex', 19, 85), ('Chris', 30, 75)]

sorted_students = sorted(students, key=lambda x: (x[1], x[2], x[0]), reverse=(True, True, False))

print(sorted_students)

运行结果如下所示:

[('Bryan', 25, 90), ('Chris', 30, 75), ('John', 22, 80), ('Alex', 19, 85)]

在上面的代码中,我们使用 key 参数来对年龄和分数进行排序,首先是年龄,然后是分数,最后按姓名排序。我们在 reverse 参数中对年龄和分数使用降序排序,反转 reverse 参数的顺序来对姓名使用升序排序。

结论

在本文中,我们了解了如何在 Python 中对元组中的多列数据进行排序。我们使用了 sorted() 函数和 key 参数来指定需要排序的列和排序顺序。最后,我们学习了如何对每个列使用不同的排序顺序。