объединить массив сортировки 1 и для каждого изменения он должен влиять на другой список - PullRequest
0 голосов
/ 11 ноября 2018

У меня есть 2 массива:

dates=[datetime.date(2015, 1, 28), datetime.date(2016, 5, 10), datetime.date(2016, 3, 15), datetime.date(2018, 10, 28), datetime.date(2017, 7, 1), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29)] 
prices=[100, 150, 25, 150, 300, 100, 100, 100, 100, 100]

Мне нужно отсортировать дату, но индексы 2 списков должны быть связаны; т.е. для каждого изменения, которое я делаю к датам, я должен сделать для цен.

Ожидаемый результат:

dates=[datetime.date(2015, 1, 28), datetime.date(2016, 5, 10), datetime.date(2016, 3, 15), datetime.date(2018, 10, 28), datetime.date(2017, 7, 1), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29), datetime.date(2018, 10, 29)]

prices=[100, 150, 25, 150, 300, 100, 100, 100, 100, 100]

В настоящее время я использую пузырьковую сортировку, но это слишком медленно для моих нужд.

1 Ответ

0 голосов
/ 11 ноября 2018

Возможно, было бы проще хранить исходные местоположения:

new_dates=[]
indices=[]
for i, date in sorted(enumerate(dates), key = lambda x: x[1]):
    new_dates.append(date)
    indices.append(i)
new_prices=[]
for i, price in sorted(enumerate(prices), key = lambda x: indices.index(x[0]):
    new_prices.append(price)
...