如何比较python中的两个字典列表(JSON)并只输出它们之间的更改?

2024-04-29 19:20:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要比较以下列表:

Old list:
[
    {
        "dns-a": [
            "107.180.51.238",
            "107.180.51.238"
        ],
        "dns-aaaa": [],
        "domain-name": "raz.com",
        "fuzzer": "original*"
    },
    {
        "dns-a": [
            "69.172.200.131",
            "69.172.200.131"
        ],
        "dns-aaaa": [],
        "domain-name": "raza.com",
        "fuzzer": "addition"
    },
]

New List:
[
    {
        "dns-a": [
            "107.180.51.238",
            "107.180.51.238"
        ],
        "dns-aaaa": [],
        "domain-name": "raz.com",
        "fuzzer": "original*"
    },
    {
        "dns-a": [
            "69.172.200.131",
            "69.172.200.131"
        ],
        "dns-aaaa": [],
        "domain-name": "raza.com",
        "fuzzer": "addition"
    },
    {
        "dns-a": [
            "104.224.184.187",
            "104.224.184.187"
        ],
        "dns-aaaa": [],
        "domain-name": "razb.com",
        "fuzzer": "addition"
    }
]

The output should be:
        {
            "dns-a": [
                "104.224.184.187",
                "104.224.184.187"
            ],
            "dns-aaaa": [],
            "domain-name": "razb.com",
            "fuzzer": "addition"
        }

我试过以下方法:

def Diff(old_list, new_list): 
    list_dif = [i for i in old_list + new_list if i not in old_list or 
    i not in new_list]
    return list_dif

当列表相同时,我得到的结果是没有什么不同,但如果有一样东西不同,我得到的是整个列表。你知道吗

我的选择是什么? 我看过类似的解决方案,但没有一个对我有效。你知道吗


Tags: nameincom列表newdnsdomainold