循环通过JSON数组进行python中的比较?

时间:2018-03-14 19:02:54

标签: python json

有没有办法循环遍历两组JSON数组,并从文件2中识别出与文件1相比的其他数组项?示例如下:

文件1:

{
    "Cars": [{
            "type": "Ford"
        },
        {
            "type": "BMW"
        }
    ]
}

档案:2

{
    "Cars": [{
            "type": "Ford"
        },
        {
            "type": "BMW"
        },
        {
            "type": "Vauxhall"
        },      
        {
            "type": "Fiat"
        }
    ]
}

期望的结果:

附加信息是:

{
        "Cars": [{
                "type": "Vauxhall"
            },      
            {
                "type": "Fiat"
            }
        ]
    }

我正在努力用Python进入数组。任何帮助非常感谢。

2 个答案:

答案 0 :(得分:1)

不确定这是最优或最好的方法,但它应该有效

假设您在python

中将数组设为dict
a = []
b = []
for val in array1["Cars"]:
    a.append(val["type"])
for val in array2["Cars"]:
    b.append(val["type"])
diff = ( set(a) | set(b) ) - ( set(a) & set(b) )

您可以迭代diff并以所需格式创建json / dict。

答案 1 :(得分:1)

如果您的数据很简单,请使用in

for c in y['Cars']:
  if c not in x['Cars']:
    print(c)

或者作为列表理解:

diff_dict = {'Cars': [c for c in y['Cars'] if c not in x['Cars']]}

输出:

{'Cars': [{'type': 'Vauxhall'}, {'type': 'Fiat'}]}

你提到你很难将文件导入python。我使用了json.load()