Многомерный массив Python Sort - PullRequest
0 голосов
/ 31 мая 2019

Мне нужно отсортировать массив массивов по определенному элементу

Это массив:

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) где: itemgetter(1) - второй элемент массива [0, [71, 554, 258, 793]] в этом 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 многомерного массива на основе 2-го элемента подмассива

1 Ответ

1 голос
/ 31 мая 2019

Просто определите функцию, которая определяет ключ для использования. Вы можете использовать частичную функцию для создания этой функции на основе индекса ключа

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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...