2014-11-17 2 views
0

Для проекта класса мне нужно использовать python 2.1, и мне, вероятно, придется использовать DSU для сортировки, с которым я не знаком. Поэтому, если возможно, мне нужна помощь.Сортировка списка на основе другого списка с DSU

У меня есть список для хранения вершин и их координат. например

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

и так далее.

У меня также есть другой список, который сохранит позиции индекса вершины, отсортированные в соответствии с их первой координатой. Так начнется, как этот

order = [0, 1, 2] 

И моя цель состоит в том, чтобы это было так, рассматривая пример

order = [2, 0, 1] 

без изменения порядка в списке «вершины».

Любые идеи? Заранее спасибо

+0

waht будет вашим ожидаемым выходом ?? – Hackaholic

+0

@Hackaholic вывод - это отсортированный список «порядок», основанный на первом элементе в каждом кортеже в списке «вершина». поэтому в приведенном выше примере в списке «порядок» показан порядок вершин, от младшей первой координаты до самой большой первой координаты. – htcoelho

ответ

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])) 
+0

Я был вынужден использовать 2.1, потому что нам нужно использовать инструмент, который был закодирован бывшим учеником, и он не был протестирован после 2.1. Хорошо, что, по-видимому, он работает с 2,7 с минимальной настройкой, поэтому вы отвечаете на работы. И спасибо, даже не торопитесь, пытаясь сделать версию версии 2.1. Действительно ценю это :) – htcoelho