Страницы

Поиск по вопросам

среда, 26 февраля 2020 г.

Python, Как отсортировать список на основе другого списка?

#python #python_3x #алгоритм #сортировка


box_b = [7, 3, 9, 5]
box_a = [apple, banana, cherry, lemon]


Суть в том, что после сортировки box_b мне нужен box_a отсортированный таким же образом.

*after sorting box_b and some algorithm*

box_b = [3, 5, 7, 9]
box_a = [banana, lemon, apple, cherry]

    


Ответы

Ответ 1



box_b = [7, 3, 9, 5] box_a = ['apple', 'banana', 'cherry', 'lemon'] new_b, new_a = zip(*[(b, a) for b, a in sorted(zip(box_b, box_a))]) print(new_b) (3, 5, 7, 9) print(new_a) ('banana', 'lemon', 'apple', 'cherry')

Ответ 2



Ещё можно сделать arg_sort — получить список индексов, по которым нужно пройти, чтобы получить отсортированный список. Это удобно, если данные тяжёлые, а вам нужна только итерация по отсортированным данным. box_b = [7, 3, 9, 5] box_a = ['apple', 'banana', 'cherry', 'lemon'] arg_sort = sorted(range(len(box_b)), key=lambda i: box_b[i]) print([box_b[i] for i in arg_sort]) print([box_a[i] for i in arg_sort]) # [3, 5, 7, 9] # ['banana', 'lemon', 'apple', 'cherry']

Комментариев нет:

Отправить комментарий