基于子阵列第二元素的Python排序多维数组

Fed*_*llo 31 python arrays sorting list multidimensional-array

我有这样一个数组:

[['G', 10], ['A', 22], ['S', 1], ['P', 14], ['V', 13], ['T', 7], ['C', 0], ['I', 219]]
Run Code Online (Sandbox Code Playgroud)

我想根据第二个元素按降序排序.理想的输出是:

[['I', 219], ['A', 22], ['P', 14], ... ]
Run Code Online (Sandbox Code Playgroud)

fal*_*tru 53

list.sort,sorted接受可选key参数.keyfunction用于生成比较密钥.

>>> sorted(lst, key=lambda x: x[1], reverse=True)
[['I', 219], ['A', 22], ['P', 14], ['V', 13], ['G', 10], ...]

>>> sorted(lst, key=lambda x: -x[1])
[['I', 219], ['A', 22], ['P', 14], ['V', 13], ['G', 10], ...]

>>> import operator
>>> sorted(lst, key=operator.itemgetter(1), reverse=True)
[['I', 219], ['A', 22], ['P', 14], ['V', 13], ['G', 10], ...]
Run Code Online (Sandbox Code Playgroud)


小智 11

使用 itemgetter

from operator import itemgetter
a = [[1, 3, 5], [2, 511, 7], [17, 233, 1]]
a = sorted(a, key=itemgetter(1))
Run Code Online (Sandbox Code Playgroud)

输出:[[1,3,5],[17,233,1],[2,511,7]]

itemgetter 也可用于按多个子阵列排序.


小智 7

做这个:

在第二列的基础上对多维数组进行降序排序:

list_name.sort(key=lambda x:x[1],reverse=True)
Run Code Online (Sandbox Code Playgroud)