我想合并两个具有相同形式的JSON,并增加已经存在于一个JSON中的differents数组: JSON a:
[
{
"productTitle": "Product1",
"api-activity": {
"api1": 1
},
"totalCalls": 1
},
{
"productTitle": "Product2",
"api-activity": {
"api1": 1,
"api2": 2,
"api3": 3,
"api4": 4
},
"totalCalls": 10
}
]
JSON b:
[
{
"productTitle": "Product1",
"api-activity": {
"api1": 1
},
"totalCalls": 1
},
{
"productTitle": "Product2",
"api-activity": {
"api1": 1,
"api2": 2,
"api3": 3,
"api4": 4
},
"totalCalls": 10
},
{
"productTitle": "Product3",
"api-activity": {
"api1": 2
},
"totalCalls": 2
}
]
要得到这样的东西:
[
{
"productTitle": "Product1",
"api-activity": {
"api1": 2
},
"totalCalls": 2
},
{
"productTitle": "Product2",
"api-activity": {
"api1": 2,
"api2": 4,
"api3": 6,
"api4": 8
},
"totalCalls": 20
},
{
"productTitle": "Product3",
"api-activity": {
"api1": 2
},
"totalCalls": 2
}
]
我尝试使用前面的脚本将它们组合起来,我将现有的JSON与数据列表(这里是我们的第二个JSON)进行比较,如下所示:
import json
with open('testa.json') as json_data:
json_a = json.load(json_data)
with open('testb.json') as json_data:
json_b = json.load(json_data)
with open('outputMerge.json', 'w') as f:
data_list = json_a
for data in json_b:
title = data["productTitle"] #get all product title
exist = False
for existing_data in data_list: #loop in data_list
if data["api-activity"] in existing_data["api-activity"]:
print ("true")
但是我使用的不同的键有一个错误:
回溯(最近一次呼叫): “文件”合并.py“,第17行,in 如果现有数据[“api活动”]中的数据[“api活动”]: TypeError:无法处理的类型:“dict”
你能帮我调试一下吗?我觉得我很接近了,或者你有更好的解决方案吗?你知道吗
我将通过将计数加载到
Counter()
对象中,使用元组(title, api)
作为键来实现这一点。然后可以将其转换回输出字典,例如:可按以下步骤进行:
提供以下输出:
相关问题 更多 >
编程相关推荐