如何通过多个键对3D数组排序

时间:2019-05-23 05:19:38

标签: python sorting multidimensional-array

我需要通过多个键对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']
]

1 个答案:

答案 0 :(得分:3)

sortedkey一起使用:

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]符号可以实现不同的比较标准。