2013-05-03 4 views
1

Я отправляю форму и затем захватываю json, чтобы сформировать dict.Как создать упорядоченный словарь из 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

Возможно, вам просто нужен «отсортированный» вызов где-нибудь ... откуда вы получаете '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) 

Вы можете увидеть некоторые документы о object_pairs_hook ключевого слова в documentation.

0

Назначение объекта словаря python - предоставить вам доступ к парам значений ключей O (1). В результате словарь может выбрать его в другом порядке для повышения производительности. Сказав, что вы всегда можете сделать что-то подобное:

for key in sorted(myd.iterkeys()): 
    print "%s: %s" % (key, myd[key]) 
Смежные вопросы