以正确的顺序将dict保存到JSON,失败

时间:2017-01-18 12:56:49

标签: python json

为什么会这样?在Python中。我正在阅读并保存它。有没有办法控制JSON的保存方式?我只知道'utf-8',你应该读或写文件。

这就是我得到的:

{
    "results": [
        {
            "result": {
                "2": 66,
                "0": 22,
                "1": 34
            },
            "name": "Amanda"
        }
    ]
}

这就是我想要的:

{
    "results": [
        {
            "name": "Amanda",
            "result": {
                "0": 22,
                "1": 34,
                "2": 66
            }
        }
    ]
}

2 个答案:

答案 0 :(得分:1)

这就是我要做的事情:

  • 遍历原始词典
  • 将每个子词典转换为OrderedDict并创建一个列表,对键进行排序,使nameresult之前(如果这是您想要的顺序,否则,某事可以做其他事情来订购钥匙,或硬编码)
  • 使用有序词典列表转储结构

我的代码(jd是您的结构):

from collections import OrderedDict

ordered_list = []
for x in jd["results"]:
    ordered = OrderedDict()
    for k,v in sorted(x.items()):
        ordered[k] = v
    ordered_list.append(ordered)

print(json.dumps({"results" : ordered_list}))

结果:

{"results": [{"name": "Amanda", "result": {"0": 22, "2": 66, "1": 34}}]}

答案 1 :(得分:0)

嗯,所需要的只是:sort_keys=True, separators=(',', ':')