自定义JSON的错误JSON

Hys*_*ysi 4 python json jq

我目前正在尝试按下不需要的JSON输出,我将返回到对我来说更有价值的格式.答案应该使用jq或Python代码(我在python中使用pyjq库)

这是当前的JSON输出:

[
 {"colour":"Red", "car": [ {"year":2000, "make":"Honda", "model":"Accord"} ] },
 {"colour":"Blue", "car": [ {"year":2015, "make":"Toyota", "model":"Camry"} ] },
 {"colour":"Red", "car": [ {"year":1999, "make":"Dodge", "model":"Ram"} ] }
]
Run Code Online (Sandbox Code Playgroud)

使用jq或者可能使用Python循环,我想将其格式化为一个新的JSON对象,如下所示:

[
 { "Red":[2000,1999] },
 { "Blue": 2015 }
]
Run Code Online (Sandbox Code Playgroud)

有没有人知道如何格式化任何看起来像上面第一个片段的JSON,并将其转换为第二个片段中列出的所需结果.

Ste*_*uch 6

如果你遍历数据,你可以改革一个新的字典,如:

码:

output = {}
for datum in data:
    for car in datum['car']:
        output.setdefault(datum['colour'], []).append(car['year'])
Run Code Online (Sandbox Code Playgroud)

测试代码:

data = [
    {"colour": "Red",
     "car": [{"year": 2000, "make": "Honda", "model": "Accord"}]},
    {"colour": "Blue",
     "car": [{"year": 2015, "make": "Toyota", "model": "Camry"}]},
    {"colour": "Red",
     "car": [{"year": 1999, "make": "Dodge", "model": "Ram"}]}
]

output = {}
for datum in data:
    for car in datum['car']:
        output.setdefault(datum['colour'], []).append(car['year'])
print(output)
Run Code Online (Sandbox Code Playgroud)

结果:

{'Red': [2000, 1999], 'Blue': [2015]}
Run Code Online (Sandbox Code Playgroud)