私はHTML要素でいっぱいのリストを持っています。また、HTMLリストに並行する日付/時刻でいっぱいのリストもあります。Python:並行リストでリストをソート
時刻/日付リストに基づいてHTMLリストを並べ替えるにはどうすればよいですか?時間/日付はタイムスタンプ形式です。
私はHTML要素でいっぱいのリストを持っています。また、HTMLリストに並行する日付/時刻でいっぱいのリストもあります。Python:並行リストでリストをソート
時刻/日付リストに基づいてHTMLリストを並べ替えるにはどうすればよいですか?時間/日付はタイムスタンプ形式です。
あなたはzip
を使用することができます。
timestamps, elements = zip(*sorted(zip(timestamps, elements)))
結果は2つのタプルになり、必要に応じてリストに変換できます。
をソートし、タプルのうち、背面HTMLを取り、アップタプルに二つのリストを郵便番号:
zipped = zip(timestamps, htmls)
zipped.sort()
sorted_htmls = [html for (timestamp, html) in zipped]
列挙型は、リスト内の各項目の(インデックス、項目)タプルのリストを提供します。索引を使用してこれをソートして、タイム・スタンプ・リストからソート・キーを読み取ることができます。次に、html要素を剥がします。
sorted_elems = [elem for i,elem in sorted(enumerate(html_elements),
key=lambda x:timestamps[x[0]])]
もっと簡単なことはありますか?
あなたは、サードパーティ製のパッケージを使用することができますが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
docsを参照してください。
どのように私は 'ソート'について知りませんでしたか?ありがとう! – Thomas
@トーマス - 悪くないでください! 'sort()'はインプレースですが、 'sorted()'は新しいリストを作成するので、大別してあなたが望むものを 'sort()'します。 :-) –
ありがとうございます。後方はどうですか? – Zeno