Как отсортировать 2 строки данных, используя 1 строку в качестве ссылки? - PullRequest
1 голос
/ 22 мая 2019

В настоящее время у меня есть 2 строки данных в одном массиве, 1 со значениями и 1 с позициями индекса из другого набора данных.Я хотел бы отсортировать эти две строки только по строке значений (по возрастанию), сохраняя при этом соответствующий индекс.

(Строки индекса не 0,1,2,3 и т. Д., Они 0,18,21и т.д.)

Ответы [ 4 ]

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

из это :

data = [('red', 1), ('blue', 1), ('red', 2), ('blue', 2)]
sorted(data, key=itemgetter(0))

[(«синий», 1), («синий», 2), («красный», 1), («красный», 2)]

0 голосов
/ 22 мая 2019

Исходя из вашего вопроса, я предполагаю, что ниже приведены данные, которые вы хотите объединить и отсортировать

firstArr = [[3,6,8,2],[1,7,9,6]]
secondArr = [3,6,78,4,2,7,9,5,34,56]

Вы можете использовать приведенный ниже код, чтобы сделать это

def merge2Arrays(firstArr,secondArr):
    result = firstArr[0:1][0]
    for i in firstArr[1:2][0]:
        result.append(secondArr[i])
    result.sort()
    print(result)

Output :  [2, 3, 5, 6, 6, 8, 9, 56]
0 голосов
/ 22 мая 2019

Предполагая, что у вас есть такой массив:

[[4, 29, 24, 3, 19, 21, 10, 7, 8, 6],
 [57, 582, 855, 383, 269, 992, 967, 815, 222, 403]]

Вы можете использовать следующий код:

import copy
mappings = dict(zip(x[1],x[0]))
sorted_values = sorted(copy.deepcopy(x[1]))
new_array = [[mappings[value] for value in sorted_values] , sorted_values]
print(new_array)

O / P:

[[4, 8, 19, 3, 6, 29, 7, 24, 10, 21],
 [57, 222, 269, 383, 403, 582, 815, 855, 967, 992]]
0 голосов
/ 22 мая 2019
indexes = [ ... ]
values = [ ... ]

values_sorted, indexes_sorted = zip(*sorted(zip(values, indexes)))

Подробнее о zip

Подробнее о отсортировано

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...