【问题标题】:How to sort a 3d array by multiple keys如何通过多个键对 3d 数组进行排序
【发布时间】:2019-10-09 15:07:00
【问题描述】:

我需要通过多个键对 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最低 排序,如果y 相等,则按x 最低排序。所以输出数组应该是这样的:

arry = [
    [[2,1,3], 'foo', 'bar'],
    [[1,2,3], 'foo', 'bar'],
    [[3,1,2], 'foo', 'bar']

    #[[x,y,z], 'blah', 'blah']
]

【问题讨论】:

  • 您是要按 x 或 y 或 z 排序吗?

标签: python sorting multidimensional-array


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2021-12-24
    • 1970-01-01
    • 2012-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-02
    • 2021-12-27
    相关资源
    最近更新 更多