如何在Python中从json创建有序字典

时间:2013-05-03 02:12:57

标签: python dictionary

我发布表单,然后抓住json形成字典。

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

现在我使用josn.loads将其转换为python dict

我这样做

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

Can I do an ordered, default dict in Python?

这样做之后我的dict命令就像这样改变了

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

如何维持订单?

2 个答案:

答案 0 :(得分:4)

我相信你应该这样做:

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

您可以在documentation中看到有关object_pairs_hook关键字的一些文档。

答案 1 :(得分:0)

python词典对象的目的是为您提供对键值对的O(1)访问。因此,字典可以选择以不同的顺序排列它以获得更好的性能需求。说过你总能做类似的事情:

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