07 Июл 2023
2 мин
477

Сортировка списка в соответствии с соответствующими значениями из параллельного списка

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

Содержание

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

Список_1 = ["яблоко", "банан", "вишня", "киви", "манго"]
Список_2 = [ 5, 3, 4, 2, 1]

Задача состоит в том, чтобы отсортировать Список_1 в соответствии со значениями из Список_2, то есть так, чтобы порядок элементов в Список_1 соответствовал порядку значений в Список_2.

В данном случае, после сортировки Список_1 должен выглядеть так:

["манго", "киви", "банан", "вишня", "яблоко"]

Решить эту задачу можно с помощью встроенной функции zip(), которая возвращает итератор кортежей, где первый элемент в каждом переданном итераторе объединен вместе, затем второй элемент в каждом переданном итераторе объединен вместе и так далее.

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

Сначала, с помощью zip(), создается список кортежей, где каждый кортеж содержит элемент из первого списка и соответствующий ему элемент из второго списка. Затем этот список кортежей сортируется по второму элементу каждого кортежа (то есть по значению из второго списка). Наконец, из отсортированного списка кортежей создается новый список, содержащий только элементы из первого списка.

Вот как это можно сделать:

Список_1 = ["яблоко", "банан", "вишня", "киви", "манго"]
Список_2 = [ 5, 3, 4, 2, 1]

список_кортежей = list(zip(Список_1, Список_2))
список_кортежей.sort(key=lambda x: x[1])

отсортированный_список = [элемент[0] for элемент in список_кортежей]

В результате отсортированный_список будет выглядеть так:

["манго", "киви", "банан", "вишня", "яблоко"]

Таким образом, используя функцию zip() и метод sort(), можно легко отсортировать один список на основе значений другого списка.

Содержание

Добавить комментарий

Узнай профессию по рисунку