2013-11-29 56 views
1

我有在python這些代碼如何可以在列表中進行排序蟒對象

類Tupla: DEF 初始化(個體,XID,概率): self.xid = XID self.prob =概率

和我追加名單上這個類的一些對象

打印myList1

[('X10',11,''),('X9',11,''),('X11',11''),('X2',11'')]

和我嘗試命令它

myList1 =排序(myList1,鍵=拉姆達Tupla:Tupla.xid,反向=真)

打印myList1

[( 'X9',11, ''),( 'X2',11, ''),( 'X11',11, ''), ( 'X10',11 '')]

我找人整理 我需要對列表進行排序是這樣的: [( 'X2',11, ''),('X9 」,11 ''),( 'X10',11 ''),( 'X11',11 '')]

我可怎麼辦呢?

感謝

回答

1
def Tupla(xid, prob): 
    class _Tupla: 
     def __init__(self): 
      pass 

     def get_id(self): 
      return xid 

     def get_prob(self): 
      return prob 


    return _Tupla() 

myList = map(lambda arg: Tupla(*arg), (('X10', 11), ('X9', 11), ('X11', 11), ('X2', 11))) 
myList.sort(key = lambda obj: int(obj.get_id()[1:])) 

print [(x.get_id(), x.get_prob()) for x in myList] 

輸出:

[('X2', 11), ('X9', 11), ('X10', 11), ('X11', 11)] 
+0

¬¬我這樣做,排序(myList1,鍵=拉姆達Tupla:Tupla.xid,反向= TRUE)你看這個問題? ?我只需要一個有點像人類的排序 – pumadn90

+0

你是什麼意思「人類排序」? – smac89

+0

好吧,我更新了答案 – smac89