2013-11-21 170 views
1

我有以下字典,我想用按鍵升序排列。Python:通過使用鍵升序對字典進行排序

animMeshes = { "anim 0" : 23, "anim 32": 4, "anim 21" : 5, "anim 2" : 66, "anim 11" : 7 , "anim 1" : 5} 

我試着使用:

for mesh,val in sorted(animMeshes.items(), key=lambda t: t[0]): 
    print mesh 

O/P:

anim 0 
anim 1 
anim 11 
anim 2 
anim 21 
anim 32 

我怎麼能拿:

anim 0 
anim 1 
anim 2 
anim 11 
anim 21 
anim 32 

回答

3

針對您的特殊情況下,這可以工作:

for mesh,val in sorted(animMeshes.items(), key=lambda t: int(t[0].split()[1])): 
    print mesh 

爲什麼?因爲你的密鑰全部以'anim'開頭,然後有一個數字...

我使用了一個轉換爲int()進行按數字排序的行爲。

+1

注意,這有什麼用它做作爲一個字典,並且只處理'str(10) int(2)'的事實。 – colcarroll

+0

上面的代碼正在工作。真棒謝謝:) – user3018319

+0

@JLLagrange,好點。有時指出明顯應該是第一件事!謝謝。 –

1

你只需要根據數字部分的整數值分裂鍵和排序,這樣

for mesh, val in sorted(animMeshes.items(), key=lambda t: int(t[0].split()[1])): 
    print mesh 

輸出

anim 0 
anim 1 
anim 2 
anim 11 
anim 21 
anim 32 
相關問題