Сортировка двух списков одновременно, но не с сортировкой выбора - PullRequest
0 голосов
/ 05 марта 2020

У меня есть список некоторых случайных значений и другой список такой же длины с соответствующими индексами. Я хочу отсортировать первый список, а во втором списке индексы должны быть отсортированы по значениям в первом списке. Я смог достичь этого, но я, когда число повторяется, не дает уникальный индекс для него. вот мой код

some_list = [4,8,6,1,1,3]
index = [(1,1),(1,6),(1,2),(1,3),(1,4),(1,5)]
new_index_pos = index.copy()
randomm = []
b = some_list.copy()
b.sort()

for i in range(len(b)):
    node = b[i]
    my_index = some_list.index(node)
    new_index_pos[i] = my_index
    val = new_index_pos[i]
    randomm.append(index[val])

вывод, который я получаю: b = [1, 1, 3, 4, 6, 8] и randomm = [(1, 3), (1, 3) , (1, 5), (1, 1), (1, 2), (1, 6)]. Как мне решить эту проблему?
Это примерный список и значения могут повторяться более двух раз

1 Ответ

0 голосов
/ 05 марта 2020

Вы можете просто сжать списки вместе, затем отсортировать их и затем принять значения кортежа.

some_list = [4,8,6,1,1,3]
index = [(1,1),(1,6),(1,2),(1,3),(1,4),(1,5)]
new_list = [i[1] for i in sorted(zip(some_list, index))]
print(new_list)

ВЫХОД

[(1, 3), (1, 4), (1, 5), (1, 1), (1, 2), (1, 6)]
...