使用DSU基于另一个列表对列表进行排序

时间:2014-11-17 22:20:16

标签: python sorting python-2.1

对于一个类项目,我需要使用python 2.1,我可能不得不使用DSU进行排序,这是我不熟悉的。如果可能的话,我想要一些帮助。

我有一个存储顶点及其坐标的列表。例如

vertex = [(2, 2), (3, 3), (1, 1)]

等等。

我还有另一个列表,它将存储顶点的索引位置,并根据它们的第一个坐标进行排序。 所以它会像这样开始

order = [0, 1, 2]

考虑到示例

,我的目标就是这样
order = [2, 0, 1]

不改变列表“vertex”中的顺序。

有什么想法吗? 提前致谢

1 个答案:

答案 0 :(得分:0)

我不知道它是否适用于Python2.1,但是下面的任何一个都是你在Python2.7中提出的要求:

order = [i for i,_ in sorted(enumerate(vertex), key = lambda x: x[1])]

order = [0,1 ,2]
order.sort(key=lambda x: vertex[x])

这可能适用于Python2.1(我没有安装Python 2.1来测试它)。

order.sort(lambda x,y:cmp(vertex[x],vertex[y]))