我需要通过多个键对3d数组进行排序,而我对lambda并不熟悉。 我有一个数组:
arry = [,
[[3,1,2], 'foo', 'bar'],
[[1,2,3], 'foo', 'bar'],
[[2,1,3], 'foo', 'bar']
#[[x,y,z], 'blah', 'blah']
]
我需要对其进行排序,以使z值最高,但是如果z
值相等,则以y
值进行排序 lowest < / strong>,如果y
等于x
最低。因此,输出数组应如下所示:
arry = [
[[2,1,3], 'foo', 'bar'],
[[1,2,3], 'foo', 'bar'],
[[3,1,2], 'foo', 'bar']
#[[x,y,z], 'blah', 'blah']
]
答案 0 :(得分:3)
将sorted
与key
一起使用:
sorted(arr, key=lambda x:(-x[0][2], x[0][1], x[0][0]))
输出:
[[[2, 1, 3], 'foo', 'bar'],
[[1, 2, 3], 'foo', 'bar'],
[[3, 1, 2], 'foo', 'bar']]
请注意,-
上的x[0][2]
符号可以实现不同的比较标准。