2013-05-03 41 views
1

我張貼的形式,然後抓住了JSON形成字典。如何創建從JSON的有序字典在Python

myd = \ 
{'a': {'b': 'c1', 'd': 'f1'}, 
'b': {'bb': 'c2', 'dd': 'f2'}, 
'c': {'bbb': 'c3', 'ddd': 'f3'} 
} 

現在我使用josn.loads將其轉換成蟒蛇字典

我做我的字典順序得到改變後這樣做

 headers = DefaultOrderedDict(list, json.loads(request.POST.get('myd'))) 

Can I do an ordered, default dict in Python?

這樣

myd = \ 
    {'a': {'b': 'c1', 'd': 'f1'}, 
    'c': {'bbb': 'c3', 'ddd': 'f3'}, 
    'b': {'bb': 'c2', 'dd': 'f2'}, 
} 

如何維護訂單?

+1

你可能只需要一個'sorted'通話地方...你從哪裏得到'DefaultOrderedDict'? – wim 2013-05-03 02:19:51

+0

。我不想按任何鍵排序,但我只想與原來的順序相同從這裏開始http://stackoverflow.com/questions/6190331/can-i-do-an-ordered-default-dict -in-蟒蛇 – user2330497 2013-05-03 02:22:20

回答

4

我相信你應該做的:

json.loads(request.POST.get('myd'), object_pairs_hook=collections.OrderedDict) 

你可以看到在documentation的object_pairs_hook關鍵字一些文檔。

0

目的蟒字典對象的是爲您提供O(1)至鍵值對訪問。因此字典可能會選擇按不同的順序排列,以獲得更好的性能需求。說了這麼多,你總是可以做類似的東西:

for key in sorted(myd.iterkeys()): 
    print "%s: %s" % (key, myd[key])