编辑:刚刚发现我用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