0

我有一个要按预先定义的特定顺序排序的元组列表:

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 函数,但无法让它产生所需的输出,也找不到线程来帮助解决这种特定类型的元组排序问题。

4

3 回答 3

4

使用列表推导:

>>> [Tuple_list[i-1] for i in order]
[(2, 3), (3, 2), (2, 0), (0, 1), (3, 1), (0, 3), (1, 3)]
于 2013-10-14T17:02:34.490 回答
0

这种“排序”称为排列

sorted_tuples = map(lambda o: Tuple_list[o-1], order)
于 2013-10-14T17:04:27.773 回答
0

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

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

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

sorted_tuples = operator.itemgetter(*order)(tuple_list)
于 2013-10-14T17:04:48.613 回答