Python: сортировка списка с параллельным списком - PullRequest
11 голосов
/ 12 марта 2011

У меня есть список, который заполнен элементами HTML. У меня также есть список, заполненный датой / временем, который параллелен списку HTML.

Как я могу отсортировать список HTML на основе списка времени / даты? Время / дата в формате метки времени.

Ответы [ 4 ]

18 голосов
/ 12 марта 2011

Вы можете использовать zip.

timestamps, elements = zip(*sorted(zip(timestamps, elements)))

Результатом будет два кортежа, которые вы можете преобразовать в списки, если хотите.

7 голосов
/ 12 марта 2011

Объедините два списка в кортежи, отсортируйте, а затем извлеките HTML-код из кортежа:

zipped = zip(timestamps, htmls)
zipped.sort()
sorted_htmls = [html for (timestamp, html) in zipped]
2 голосов
/ 12 марта 2011

Перечисление выдаст вам список (индекс, элемент) кортежей для каждого элемента в списке.Вы можете отсортировать это, используя индекс, чтобы прочитать ключ сортировки из списка временных меток.Затем снимите HTML-элементы:

sorted_elems = [elem for i,elem in sorted(enumerate(html_elements), 
                                          key=lambda x:timestamps[x[0]])]

Что может быть проще?

0 голосов
/ 23 августа 2017

Вы можете использовать сторонний пакет под названием more_itertools:

import more_itertools 

timestamps = ["08-11-17", "01-13-17", "11-22-17"]
elements = ["<p>", "<b>", "<a href>"]
more_itertools.sort_together([timestamps, elements])
# [('01-13-17', '08-11-17', '11-22-17'), ('<b>', '<p>', '<a href>')]

См. more_itertools документы для получения дополнительной информации.

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