📅  最后修改于: 2023-12-03 15:04:11.765000             🧑  作者: Mango
有时候我们需要对元组中的多列进行排序。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
参数来指定需要排序的列和排序顺序。最后,我们学习了如何对每个列使用不同的排序顺序。