繁体   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