сортировать список в Python по порядку двух других списков - PullRequest
2 голосов
/ 07 мая 2019

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

Я не могу использовать ни zip, ни перечислить в моем коде, чтобы получить новый индекс второго списка.

first=[(1,1,1),(2,2,2),(3,3,3)]
second=[(2,2,2),(3,3,3),(1,1,1)]
third=[2,3,1]

second=sorted(second,key=first.index)

print(second)

[(1,1,1),(2,2,2),(3,3,3)]

d = [i[0] for i in sorted(enumerate(second), key=lambda x:first.index)]

d должно быть (2,0,1), но оно не работает

цель третьего списка - стать: [1,2,3]

Ответы [ 2 ]

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

Этот вопрос решен. Можно получить индекс из переупорядоченного «второго», как показано в LINK, и использовать этот индексный список для сортировки любого другого списка.

Сортировка списка python по порядку другого списка И получение старого индекса

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

Чтобы получить [1, 2, 3], используйте:

third = sorted(third, key=list(map(lambda x: x[0],first)).index)

Чтобы получить [2, 0, 1], используйте:

d = sorted(range(second), key=lambda x: first[x])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...