簡體   English   中英

Python按預定義順序對元組列表進行重新排序

[英]Python re-ordering a list of tuples by pre-defined sequence

我有一個元組列表,我想按預先定義的特定順序進行排序:

Tuple_list=[(0, 1), (0, 3), (1, 3), (2, 0), (2, 3), (3, 1), (3, 2)]

order=[5,7,4,1,6,2,3]

sorted_tuples=[(2,3), (3,2), (2,0), (0,1), (3,1), (0,3), (1,3)]

順序是指元組在列表中的位置。 我一直在嘗試使用python的sorted函數,但是無法獲取它以產生所需的輸出,並且找不到找到幫助這種特定類型的元組排序問題的線程。

使用列表理解:

>>> [Tuple_list[i-1] for i in order]
[(2, 3), (3, 2), (2, 0), (0, 1), (3, 1), (0, 3), (1, 3)]

這種“排序”稱為排列

sorted_tuples = map(lambda o: Tuple_list[o-1], order)

如果您已經知道要按什么順序處理的元素,則無需使用排序算法-只需遍歷索引並獲取相應的列表項即可:

sorted_tuples = [tuple_list[i - 1] for i in order]

或者,如果您使用真正的基於零的Python索引

sorted_tuples = operator.itemgetter(*order)(tuple_list)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM