在python中如何按最大两个轴对列表排序?

2021-09-27 06:17:13 发布

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

我想按列表中每个元素的第0个和第1个索引的最大值对列表进行排序。你知道吗

例如,如果我有这样一个列表:

[[2,1,2],
 [0,3,9],
 [1,2,9],
 [1,1,2],
 [3,2,7]]

排序后,应如下所示:

[[0,3,9],
 [3,2,7],
 [2,1,2],
 [1,2,9],
 [1,1,2]]

那么什么是有效的方法呢?你知道吗

我更喜欢使用numpy,但也欢迎其他解决方案。你知道吗

2条回答
网友
1楼 ·

取前两列的行最大值argsort,然后反转以获得降序。你知道吗

您尚未指定任何连接断路器,因此这与所需的输出不匹配。换句话说,你的问题没有唯一的解决办法。你知道吗

res = A[A[:, :2].max(1).argsort()[::-1]]

array([[3, 2, 7],
       [0, 3, 9],
       [1, 2, 9],
       [2, 1, 2],
       [1, 1, 2]])
网友
2楼 ·

只需将sort与自定义键函数一起使用:

data = [[2,1,2],[0,3,9],[1,2,9],[1,1,2],[3,2,7]]


data.sort(key=lambda x: max(x[0:2]),reverse=True)

相关问题