2013-05-03 3 views
1

양식을 게시 한 다음 json을 잡아서 dict 양식을 작성합니다.Python의 json에서 순서가 지정된 사전을 만들려면 어떻게해야합니까?

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

는 지금은

나는 DICT 내 순서가 변경됩니다 것을 수행 한 후이

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

Can I do an ordered, default dict in Python?

를하고있는 중이 야 파이썬 딕셔너리에 그 변환 josn.loads을 사용하고 있습니다 이 같은

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

주문을 어떻게 유지할 수 있습니까?

+1

어딘가에 '정렬 된'호출이 필요할 것입니다. 어디서'DefaultOrderedDict'를 얻을 수 있습니까?! – wim

+0

. 어떤 키로 정렬하고 싶지는 않지만 원본과 동일한 순서를 원한다. http://stackoverflow.com/questions/6190331/can-i-do-an-ordered-default-dict 여기에서 온 것이다. 파이썬에서 – user2330497

답변

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]) 
관련 문제