如何按列对多维数组排序?

2024-06-06 22:18:12 发布

您现在位置:Python中文网/ 问答频道 /正文

是否有方法使用sort()方法或任何其他方法按列对列表进行排序?假设我有一个清单:

[
[John,2],
[Jim,9],
[Jason,1]
]

我想把它分类如下:

[
[Jason,1],
[John,2],
[Jim,9],
]

最好的方法是什么?

编辑:

现在我遇到索引超出范围的错误。我有一个二维数组,也就是说1000行b 3列。我想根据第三栏来排序。这是密码吗?

sorted_list = sorted(list_not_sorted, key=lambda x:x[2])

Tags: 方法编辑密码列表排序错误分类数组
3条回答

是的。内置的sorted接受一个key参数:

sorted(li,key=lambda x: x[1])
Out[31]: [['Jason', 1], ['John', 2], ['Jim', 9]]

注意,sorted返回一个新列表。如果要进行适当排序,请使用列表的.sort方法(该方法还可以方便地接受key参数)。

或者

from operator import itemgetter
sorted(li,key=itemgetter(1))
Out[33]: [['Jason', 1], ['John', 2], ['Jim', 9]]

Read more on the python wiki

可以将list.sort与其可选的^{} parameter^{} expression一起使用:

>>> lst = [
...     ['John',2],
...     ['Jim',9],
...     ['Jason',1]
... ]
>>> lst.sort(key=lambda x:x[1])
>>> lst
[['Jason', 1], ['John', 2], ['Jim', 9]]
>>>

这将对列表进行适当的排序。


注意,对于大型列表,使用^{}而不是lambda会更快:

>>> from operator import itemgetter
>>> lst = [
...     ['John',2],
...     ['Jim',9],
...     ['Jason',1]
... ]
>>> lst.sort(key=itemgetter(1))
>>> lst
[['Jason', 1], ['John', 2], ['Jim', 9]]
>>>

您可以使用带键的排序方法。

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

相关问题 更多 >