2011-09-02 79 views
0

可能重複列表的詞典:
Sorting a dictionary having keys as string of numbers in python排序依據鍵值

我想對列表進行排序的基礎上的按鍵值的字典。這是現在的樣子

{'217': ['109'], 
'214': ['111', '156', '159'], 
'215': ['111'], 
'219': ['111', '114', '212', '214’]} 

但我想是這樣

{'214': ['111', '156', '159'], 
'215': ['111'], 
'217': ['109'], 
'219': ['111', '114', '212', '214’]} 

有什麼建議?謝謝

回答

3

字典沒有自己的鑰匙在任何特定的順序,因爲它們是作爲哈希實現排序表。你可以在有序的鍵和值,而不是作爲一個字典,使用類似:

>>> mydict = {'217': ['109'], '214': ['111', '156', '159'], '215': ['111'], '219': ['111', '114', '212', '214']} 
>>> [(k, mydict[k]) for k in sorted(mydict)] 
[('214', ['111', '156', '159']), ('215', ['111']), ('217', ['109']), ('219', ['111', '114', '212', '214'])] 
1

您可以使用collections.OrderedDict(可在Python2.7或3.1+)

使用TokenMacGuy的理解:

collections.OrderedDict((k, mydict[k]) for k in sorted(mydict)) 
+2

請注意'OrderedDict'不保留鍵排序,而是按照它們插入的順序返回它們。由於JBernardo按排序順序插入它們,它們將被返回,但如果稍後添加更多的鍵,則必須使用OrderedDict。 – SingleNegationElimination

+0

這就是爲什麼你需要排序之前... – JBernardo

+0

我注意到了,但也許並不是每個人都在看你的答案,發現這很明顯;我想我會提請注意那個細節。 – SingleNegationElimination