【问题标题】:Compare two separate JSONs比较两个单独的 JSON
【发布时间】:2022-01-06 10:05:43
【问题描述】:

我有一个来自中间阶段的结果 json,如下所示

a=[{
    "ID": "1201",
    "SubID": "S1201",
    "Information": {
        "Name": "Kim",
        "Age": "41"
    }
}, {
    "ID": "1433",
    "subID": "G1433",
    "Information": {
        "Name": "John",
        "Age": "32"
    }
}]

我还有一个json需要和上面的json比较

c= [{
            "ID": "1201",
            "SubID": "S1201"
        },
        {
            "ID": "3211",
            "subID": "G3211"
        }
    ]

因为我的中间结果中的 json object(a) 存在于另一个 json(c) 中。我只想保留正在重复的 json 对象。

expected output:

[{
    "ID": "1201",
    "SubID": "S1201",
    "Information": {
        "Name": "Kim",
        "Age": "41"
    }
}]

我不清楚要采用什么方法来实现相同的目标。请指导我。谢谢。

【问题讨论】:

  • 这些都不是 JSON 而是 Python dicts。读取并解析文件后,生成的数据将独立于 JSON。
  • 我对 python 了解不多,但我建议使用 for 循环并检查数组中是否存在该值。我认为应该有一个类似的函数:PHP array_key_exists。如果没有,则删除该数组。
  • @Robbie 找到了一个 python 等效的 has_key ,感谢您的时间

标签: python json python-3.x list dictionary


【解决方案1】:
ids = [e['ID'] for e in c]
repeated = [e for e in a if e['ID'] in ids]
print(repeated)

【讨论】:

  • [d1 for d1 in a for d2 in c if d1.get("ID") == d2.get("ID") is not None]
  • 即使 zip 也适用于这个例子,尽管它不太可能足以满足 OP 的真实数据
猜你喜欢
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-11
  • 2012-12-26
  • 2020-07-22
相关资源
最近更新 更多