我试图递归地比较以下两个python字典:
expectededr = {'uid': 'e579b8cb-7d9f-4c0b-97de-a03bb52a1ec3', 'attempted': {'smpp': {'registeredDelivery': 0}, 'status': 'success', 'OATON': 1, 'OANPI': 1, 'DATON': 1, 'DANPI': 1, 'OA': '12149921220', 'DA': '1514525404'}, 'customerID': 'customer01', 'productID': 'product'}
edr = {'Category': 'NO', 'Type': 'mt', 'uid': 'e579b8cb-7d9f-4c0b-97de-a03bb52a1ec3', 'protocolID': 'smpp', 'direction': 'attempted', 'attempted': {'status': 'success', 'OANPI': 1, 'DATON': 1, 't2': 1512549691602, 'DANPI': 1, 'OA': '12149921220', 'DA': '1514525404', 'smpp': {'fragmented': False, 'sequenceID': 1, 'registeredDelivery': 0, 'messageID': '4e7b48ad-b39e-4e91-a7bb-2de463e4a6ee', 'srcPort': 39417, 'messageType': 4, 'Status': 0, 'ESMClass': 0, 'dstPort': 0, 'size': 0}, 'OATON': 1, 'PID': 0, 't1': 1512549691602}, 'customerID': 'customer01', 'productID': 'product'}
我试图通过查找并比较第二个字典中第一个字典的键和值,如果匹配则print PASS
elseprint FAIL
。在
输出:
FAIL
PASS
PASS
PASS
以上代码无法比较所有键和值,因为它们是嵌套字典。
正如您在下面看到的,如果我打印上面的键和值,我会发现它不在子字典中并且缺少它们的键:
for key in expectededr:
if expectededr[key] == edr[key]:
print(expectededr[key])
print(edr[key])
输出:
customer01
customer01
e579b8cb-7d9f-4c0b-97de-a03bb52a1ec3
e579b8cb-7d9f-4c0b-97de-a03bb52a1ec3
product
product
有人能帮我更新这段代码,这样我就可以在这些嵌套词典中进行比较了吗?在
简单方法:
一种方法是展开字典,然后比较键是否匹配。在
所以让我们先初始化你的口述:
对于扁平化您的字典,我们可以使用the approach suggested in Flatten nested Python dictionaries, compressing keys:
^{pr2}$生成扁平的dicts
现在简单地比较一下:
相关问题 更多 >
编程相关推荐