編輯:剛剛發現我用py 2.6.2(安裝工作,所以我不能做太多的事情)Python的排序基於2類屬性
所以我想找到最好的根據2種不同類別屬性對列表進行排序的方法
此列表基本上是一些信息,用於將某些人從一個房間移動到另一個房間,某些人可能是鏈條移動的一部分 (即Joe Blow必須先移動我們可以將Jane Doe轉移到Joe的位置,Jane必須在John Wick進入Jane的位置之前移動等)。
我得到所有信息somet像下面那樣興奮,但也可能有一些人不像Dan Man在下面的例子中那樣移動鏈條的一部分。
John Wick 303.10 -> 415.09
Dan Man 409.08 -> 221.02
Joe Blow 225.06 -> 512.01
Jane Doe 415.09 -> 225.06
我把所有的相關信息分成一類
startRoom
endRoom
originalString
所以這部分是不是一個問題,但是當我嘗試「蠻力」之類的像如下:(注意,我做的列表(鏈),因爲它是前面一組,以確保我沒有在那裏獲得雙打)
def sortChains():
global chains
#convert the set of chains to a list for list functions
chains = list(chains)
for x, move1 in enumerate(chains):
for y, move2 in enumerate(chains):
if move1.startRoom == move2.endRoom:
temp = chains[y]
chains.remove(move2)
chains.insert(x,temp)
continue
我的問題是排序。問題的一個部分是找到鏈中的人,然後在那之後正確排序。 任何想法/幫助是完全讚賞。是的,我知道一個雙循環,而在循環中移動東西並不是最好的,但這是我當時能想到的最好的。
如何排序'[(A,1,2),(B,2,1)]'? –
鏈條是否需要分組?或者在你的例子中輸出Joe - > Dan - > Jane - > John'可以嗎? – Adirio
@Adirio會很好,因爲我有另一個循環可以通過並在鏈之間添加一個間隔(因爲可以有多個) – TEvashkevich