我正在寻找一种计算两个JSON文件交集的选项。我已经搜索过了,发现可以使用集合来解决我的问题。这个方法“还行”。但是我需要更详细的交集视图,这就是问题开始的地方。
如何计算交集:
这只是“键”,但我需要字典。目前它给我这些键来表示其中有一个交集。也许在“汽车”中,两个文件都有一辆“奥迪”,但国籍不同,因为一辆车是在美国生产的,另一辆车是在德国生产的。但它仍然返回“汽车”,而不是“奥迪”。
我希望我能描述清楚我的问题。这是我的第一个问题...
def calcIntersect(ValidationFile, json_object1, json_object2):
with open(ValidationFile) as schema_file:
schema = j.load(schema_file)
js.Draft4Validator.check_schema(schema)
with open(json_object1) as spec_file:
spec1 = j.load(spec_file, object_pairs_hook=OrderedDict)
js.validate(spec1, schema)
with open(json_object2) as spec_file:
spec2 = j.load(spec_file, object_pairs_hook=OrderedDict)
js.validate(spec2, schema)
x = set(spec1) & set(spec2)
print(x)
示例数据1:
{
"Car":{
"Brand":"Audi",
"Nationality":"Germany",
"Modelname":"A6"
},
"Engine":{
"cubic capacity":"2967",
"Enginetype":"V6",
"Fuel":"Diesel",
"MaxSpeed":"250"
},
"Colors":{
"Carcolor":"Black",
"Interiorrcolor":"white"
}
}
示例数据2:
{
"Car":{
"Brand":"Audi",
"Nationality":"USA",
"Modelname":"A6"
},
"Engine":{
"cubic capacity":"2995",
"Enginetype":"V6",
"Fuel":"Petrol",
"MaxSpeed":"250"
},
"Colors":{
"Carcolor":"Black",
"Interiorrcolor":"Black"
}
}
例子输出:
{'Car', 'Colors', 'Engine'}
这只是“键”,但我需要字典。目前它给我这些键来表示其中有一个交集。也许在“汽车”中,两个文件都有一辆“奥迪”,但国籍不同,因为一辆车是在美国生产的,另一辆车是在德国生产的。但它仍然返回“汽车”,而不是“奥迪”。
我希望我能描述清楚我的问题。这是我的第一个问题...