Сортировать два списка в Python по одному списку - PullRequest
0 голосов
/ 27 апреля 2019

У меня есть два списка, один список для изображений, другой для массивов.

l1 = [img1, img2, img3]

l2 = [[1, 2, 3, 4], [3, 5, 5], [1, 4, 5, 9, 8, 8]]

Я хочу отсортировать list2 по длине, что я могу сделать как:

l2 = sorted(l2, key=lambda e: len(e[0]), reverse=True)

Теперь порядок элементов в l2 изменился,

Я хочу сохранить изображения, принадлежащие этим спискам,

т.е.. l1 также должен быть организован так, чтобы img1 -> corresponds to [1, 2, 3, 4]

Как это сделать? спасибо за помощь.

1 Ответ

1 голос
/ 27 апреля 2019

Используйте zip() с sorted:

l1 = ['img1', 'img2', 'img3']

l2 = [[1, 2, 3, 4], [3, 5, 5], [1, 4, 5, 9, 8, 8]]

l1, l2 = zip(*sorted(zip(l1, l2), key=lambda x: len(x[1]), reverse=True))

print(list(l1)) # ['img3', 'img1', 'img2']
print(list(l2)) # [[1, 4, 5, 9, 8, 8], [1, 2, 3, 4], [3, 5, 5]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...