1、json數據轉換成字典
dict1 = json.load(load_f1) dict2 = json.load(load_f2)
2、將兩個字典按key排好序,然后使用zip()函數將兩個字典對應的key打包成元組。比較對應的key的value是否相等。
for src_list, dst_list in zip(sorted(dict1), sorted(dict2)): if str(dict1[src_list]) != str(dict2[dst_list]): print(src_list,dict1[src_list],dst_list,dict2[dst_list])
zip() 函數用於將可迭代的對象作為參數,將對象中對應的元素打包成一個個元組。
如果數據格式為:
dict1 = {"id": "100", "name": "蘋果", "info": {"uid":"2020","phoneName":["一代","蘋果12"]}} dict2 = {"id": "100", "name": "華為", "info": {"uid":"2020","phoneName":["一代","Mate40"]}}
使用遞歸函數進行處理
def cmp(src_data, dst_data): if isinstance(src_data, dict): """若為dict格式"""
for key in dst_data: if key not in src_data: print("src不存在這個key") for key in src_data: if key in dst_data: """遞歸""" cmp(src_data[key], dst_data[key]) else: print("dst不存在這個key") elif isinstance(src_data, list): """若為list格式"""
if len(src_data) != len(dst_data): print("list len: '{}' != '{}'".format(len(src_data), len(dst_data))) for src_list, dst_list in zip(sorted(src_data), sorted(dst_data)): """遞歸""" cmp(src_list, dst_list) else: if str(src_data) != str(dst_data): print(src_data) dict1 = {"id": "100", "name": "蘋果", "info": {"uid": "2020", "phoneName": ["一代", "蘋果12"]}} dict2 = {"id": "100", "name": "華為", "info": {"uid": "2020", "phoneName": ["一代", "Mate40"]}} cmp(dict1, dict2)