【发布时间】:2020-09-22 19:27:12
【问题描述】:
给定以下数组 (arr,indices),如果 ,我需要按照 升序 对数组进行排序,以 (i[0])th 索引>i[1] 等于 0 并且 降序 如果 i[1] 等于 1 ,其中 i 指的是索引数组的每个元素。
约束
1<= len(indices) <=10
1<= len(arr) <=10^4
示例
arr=[[1,2,3],[3,2,1],[4,2,1],[6,4,3]]
indices=[[2,0],[0,1]]
所需输出
[[4,2,1],[3,2,1],[6,4,3],[1,2,3]]
说明
第一个 arr 相对于第二个索引为 (indices[0][0]=2) 按升序排序为 (indices[0][1]=0)
[[3,2,1],[ 4,2,1],[1,2,3],[6,4,3]]
然后它以第 0 个索引为(indices[1][0]=0) 以降序排列为(indices[1][1]=1)
[[4,2,1],[3,2,1],[6,4,3],[1,2,3]]
注意
arr,索引需要作为输入,所以我不能写arr.sort(key=lambda x: (x[2],-x[0]))
我的方法
我尝试了以下方法,但没有给出正确的输出
arr.sort(key=lambda x:next(x[i[0]] if i[1]==0 else -x[i[0]] for i in indices))
我的输出
[[3,2,1],[4,2,1],[1,2,3],[6,4,3]]
预期输出
[[4,2,1],[3,2,1],[6,4,3],[1,2,3]]
【问题讨论】:
标签: python sorting lambda expression