排序列表中的列表的方法?

9 投票
3 回答
27491 浏览
提问于 2025-04-16 13:02

我有一个列表,里面包含了多个列表(不能用元组,因为我需要动态生成这个结构),这些列表的结构是每个里面有一个整数和一个浮点数,像这样:

[[1,1.0345],[2,5.098],[3,4.89],[2,5.97]]

我想对这个列表进行排序,但我只找到内置的排序功能,它只能按每个子列表的第一个元素来排序,或者根本不排序。其实我想按每个子列表的第二个元素来排序,而且我不想自己写排序的代码。所以我希望的结果是这样的:

[[1,1.0345],[3,4.89],[2,5.098],[2,5.97]]

有人能告诉我怎么用内置的排序功能来实现这个吗?

3 个回答

3

可以试试使用排序的关键参数...

sorted_list = sorted([[1,1.0345],[3,4.89],[2,5.098],[2,5.97]], key=lambda x: x[1])

这段代码告诉Python在排序这个列表里的每个子列表时,使用每个子列表中索引为1的那个元素作为比较的依据。

13

在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后在另一个地方使用这些数据。这个过程就像是从一个盒子里拿东西,然后把它放到另一个盒子里。

有些时候,我们会遇到一些问题,比如数据的格式不对,或者我们想要的数据没有被正确地提取出来。这就像是你想要的玩具在盒子底下,而你没有找到它。

为了避免这些问题,我们可以使用一些工具和方法来帮助我们更好地管理和处理这些数据。就像在整理房间时,我们会用箱子、标签和清单来确保每样东西都在正确的位置。

总之,处理数据就像是整理和搬运东西,我们需要确保每一步都做得正确,这样才能顺利完成我们的任务。

>>> l = [[1,1.0345],[2,5.098],[3,4.89],[2,5.97]]
>>> l.sort(key=lambda x: x[1])
>>> l
[[1, 1.0345], [3, 4.8899999999999997], [2, 5.0979999999999999], [2, 5.9699999999999998]]
22

传递 key 参数。

L.sort(key=operator.itemgetter(1))

撰写回答