2015-01-20 204 views
1
from collections import OrderedDict 
dictionary = {"Charlie": [[7]], "Alex": [[4]], "Brandon": [[8]]} 
OrderedDict(sorted(dictionary.items(), key=lambda x: x[0])) 
print(dictionary) 

好吧我試圖按字母順序排序我的字典,但字典在第三行代碼後沒有更改順序,如上所示。 任何人都可以幫我解決問題嗎?如何按關鍵字按字母順序排列字典

+0

可能的重複[如何按字母順序排序字典Python](http://stackoverflow.com/questions/22264956/how-to-sort-dictionary-by-key-in-alphabetical-order-python ) – alfasin 2015-01-20 19:26:26

+0

也複製此:http://stackoverflow.com/questions/9001509/python-dictionary-sort-by-key(我其實更喜歡答案) – moooeeeep 2015-01-20 20:06:31

回答

3

OrderedDict是n一個命令字典的函數。這是不可能的,因爲字典在Python中自然是無序的。相反,OrderedDict是一種支持訂購商品的特殊字典。

如果你想在你的代碼中使用的OrderedDict,您需要將其保存在一個變量:

ordered_dict = OrderedDict(sorted(dictionary.items(), key=lambda x: x[0])) 

然而要注意dictionary仍將是該操作後,無序的;上面的行只使用dictionary中的項目來構造新的OrderedDict對象。

1

你將不得不爲它分配回dictionary,因爲它不是就地

dictionary = OrderedDict(sorted(dictionary.items(), key=lambda x: x[0])) 

現在你的O/P將如預期那樣

OrderedDict([('Alex', [[4]]), ('Brandon', [[8]]), ('Charlie', [[7]])]) 
1

你不需要key爲您sorted功能:

>>> OrderedDict(sorted(dictionary.items())) 
OrderedDict([('Alex', [[4]]), ('Brandon', [[8]]), ('Charlie', [[7]])])