-1

我需要按特定元素对数组进行排序

这是一个数组:

arr= 
[0, [71, 554, 258, 793]]
[1, [61, 415, 148, 593]]
[2, [91, 145, 658, 893]]

我需要能够通过arr[0][0]内部数组中的任何元素(如arr[0][1]arr[0][2]

目前,我可以使用key=itemgetter(1) where 对其进行排序:itemgetter(1)- is second element of array [0, [71, 554, 258, 793]] in this cese = 71

from operator import itemgetter
array = sorted(array, key=itemgetter(1))
print(*array[:], sep="\n")

如何按内部数组中的任何元素对该数组进行排序[71, 554, 258, 793]

所以如果我按内部数组输出中的第二个元素排序应该是这样的:(第 145、415、554 列)

arr= 
[2, [91, 145, 658, 893]]
[1, [61, 415, 148, 593]]
[0, [71, 554, 258, 793]]

如果我按内部数组输出中的第三个元素排序应该是这样的:(第 148、258、658 列)

arr= 
[1, [61, 415, 148, 593]]
[0, [71, 554, 258, 793]]
[2, [91, 145, 658, 893]]

这有点类似于这个问题:Python Sort Multidimensional Array Based on 2nd Element of Subarray

4

1 回答 1

1

只需定义一个决定要使用的键的函数。您可以使用偏函数根据键索引创建此函数

from functools import partial

def sort_key(si, x):
    return x[1][si]

sort_index = 1  # or 1 or 2

partial_sort_key = partial(sort_key, sort_index)

print(sorted(arr, key=partial_sort_key))
于 2019-05-30T22:59:00.617 回答