从蟒蛇字典更改嵌套JSON estructure

时间:2021-01-07 16:06:03

标签: python json dictionary

我有一个巨大的JSON文件:tribunals.json,看起来像这样:

[
    {
        "city":"05045",
        "tribunals":[
            {"name":"tribunal 1","value":"path_1"}
            ]
    },
    {
        "city":"81001",
        "tribunals":[
            {"name":"tribunal 1","value":"path_1"},
            {"name":"tribunal 2","value":"path_2"},
            {"name":"tribunal 3","value":"path_3"},
            {"name":"tribunal 4","value":"path_4"},
            {"name":"tribunal 5","value":"path_5"},
            {"name":"tribunal 6","value":"path_6"}
            ]
    }
]

我想将它转变成这样:

{
    "05045": 
    {
        "tribunal 1": "path_1"
    },
    "81001":
    {
        "tribunal 1": "path_1",
        "tribunal 2": "path_2",
        "tribunal 3": "path_3",
        "tribunal 4": "path_4",
        "tribunal 5": "path_5",
        "tribunal 6": "path_6"
    }
}

我已经尝试不同类型的迭代在JSON获得德预期的输出,但没有一次成功。现在,我这样做是:

import json
tribunals = open('tribunals.json',encoding='utf-8')
tribunals = json.load(tribunals)

for tribunal in tribunals:
    print(tribunal['city'])
    for tribunals_list in tribunal['tribunals']:
        print(tribunals_list)

这使我的下一个输出

05045
{"name":"tribunal 1", "value":"path_1"}
81001
{"name":"tribunal 1","value": "path_1"}
{"name":"tribunal 2","value": "path_2"}
{"name":"tribunal 3","value": "path_3"}
{"name":"tribunal 4","value": "path_4"}
{"name":"tribunal 5","value": "path_5"}
{"name":"tribunal 6","value": "path_6"}

和在此基础上,我整理使用文本编辑器的工作,但很明显,最好的办法是使用脚本完全这样做。有什么建议吗?

谢谢

1 个答案:

答案 0 :(得分:2)

import json

tribunals = open('tribunals.json',encoding='utf-8')
tribunals = json.load(tribunals)

result = {}

for tribunal in tribunals:
    result[tribunal['city']] = {}
    for item in tribunal['tribunals']:
        result[tribunal['city']][item['name']] = item['value']

print(result)