Python3:如何比较两个嵌套的动态字典的数据?

2024-05-23 19:31:54 发布

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

我试图找到一种方法来比较两个没有库的字典,但是数据是嵌套的,键没有排序也是。那个数据本质上是动态的,这意味着字典中的键也会发生变化和嵌套。 如果嵌套不固定,我就无法解析字典。在

示例数据:

source_data = {
    "name":"Kaleigh", "username":"Kaleigh60", "email":"Kaleigh6047@gmail.com",
    "address":{
        "street":"MyahCourse","suite":"Apt.657","city":"Boyerberg","zipcode":"66413-8920",
        "geo":{"lat":"-44.6203","lng":"16.7454"}
    },
    "website":"megane.biz",
    "friends":[
        {"name":"Little-Reinger","catchPhrase":"Enhancedregionalemulation"},
        {"name":"Big-Reinger","catchPhrase":"emulation"}
    ],
    "Numbers":[1,2,3,4]
}

destination_data = {
    "name":"Kaligh", "username": "Kaleigh60", "email": "Kaleigh6047@gmail.com",
    "address":{
        "street":"GoldCourse", "suite":"Apt.657", "city":"Boyerberg",
        "zipcode":"66413-8920",
        "geo":{"lat":"-44.6203","lng":"16.7454"}
    },
    "website":"megane.biz",
    "friends":[
        {"name":"Reinger", "catchPhrase":"Enhancedregionalemulation"},
        {"name":"Big-Reinger","catchPhrase":"emulation"}
    ],
    "Numbers":[4,2,1,5]
}

我不明白如何解析和比较字典? 预期输出:值不同的键和值为list[srcvalue,destvalue]例如

^{pr2}$

提前谢谢


Tags: 数据namecomstreetdata字典addressemail
2条回答

来自here

可以基于以下值比较两个词典:

for x_values, y_values in zip(source_data.iteritems(), destination_data.iteritems()):
        if x_values == y_values:
            # Matched
        else:
            # Not Matched

dict的内置相等运算符已经递归地比较嵌套dict值。在

>>> a={1:2,3:4,2:{2:4}}
>>> b={3:4,2:{2:4},1:2}
>>> a==b
True
>>> b={3:4,2:{2:3},1:2}
>>> a==b
False
>>>

相关问题 更多 >