Python通过预定义的序列重新排序元组列表

时间:2013-10-14 16:57:46

标签: python sorting tuples

我有一个元组列表,我想根据预先定义的特定订单进行排序:

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的sort函数,但无法使它产生所需的输出,并且无法找到一个线程来帮助解决这种特殊类型的元组排序问题。

3 个答案:

答案 0 :(得分:4)

使用列表理解:

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

答案 1 :(得分:0)

这种“排序”称为排列

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

答案 2 :(得分:0)

如果您已经知道要按什么顺序采用哪些元素,则不需要使用排序算法 - 只需迭代索引并获取相应的列表项:

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

或者,如果你使用真正的从零开始的Python索引

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