Skip to main content
 Web开发网 » 编程语言 » Python语言

Python接口自动化,字典对比,企业级封装,处理各种嵌套

2021年11月27日3910百度已收录

直接上代码,需要的领走!

def CompareDict(dict1,dict2): if not type(dict1) == type(dict2) == dict: #判断传入参数是否为字典类型,不是不做处理 raise ValueError("【Fail】 传入了不是字典类型的参数") for key1,values1 in dict1.items(): if key1 not in str(dict2): #判断2字典结构是否一致 raise ValueError("【Fail】 两字典对比失败,字典1中的key 【{}】 不在字典2中".format(key1)) for key2,values2 in dict2.items(): if key1 == key2: if type(values1) == type(values2) == dict: #判断 是否是字典嵌套字典,如果是会递归判断 CompareDict(values1,values2) elif type(values1) == type(values2) == list: #判断 是否是字典嵌套列表,如果是做进一步处理 for list1,list2 in zip(values1,values2): if type(list1) == type(list2) == dict: #判断 列表中 元素 是否为字典,如果是字典就递归判断 CompareDict(list1,list2) else: # 列表中元素不是字典类型,跳过对比 print("字典中1 key为【{}】所嵌套的列表中元素【{}】类型不为字典,跳过判断".format(key1,list1)) print("字典中2 key为【{}】所嵌套的列表中元素【{}】类型不为字典,跳过判断".format(key2,list2)) else: # 普通value 对比 assert values1 == values2,"【Fail】 【{}】!= 【{}】对比失败,字典1中 key【{}】对应值与字典2中key【{}】对应值,不相等".format(values1,values2,key1,key2) print("【pass】 对比结束,两字典结构以及内容相同")试用结果:

=====================普通字典对比===============dict1 = {"AA":"aa","BB":"bb","CC":"cc"}dict2 = {"AA":"aa","BB":"bb","CC":"cc"}CompareDict(dict1,dict2)输出:【pass】 对比结束,两字典结构以及内容相同dict1 = {"AA":"aa","BB":"bb","CC":"cc"}dict2 = {"AA":"rf","BB":"bb","CC":"cc"}CompareDict(dict1,dict2)输出:AssertionError: 【Fail】 【aa】!= 【rf】对比失败,字典1中 key【AA】对应值与字典2中key【AA】对应值,不相等=====================字典嵌套字典对比=============== dict1 = {"AA":{"dict":"AAAAA"},"BB":"bb","CC":"cc"}dict2 = {"AA":{"dict":"AAAAA"},"BB":"bb","CC":"cc"}CompareDict(dict1,dict2)输出:【pass】 对比结束,两字典结构以及内容相同dict1 = {"AA":{"dict":"AAAAA"},"BB":"bb","CC":"cc"}dict2 = {"AA":{"dict":"AAAWAA"},"BB":"bb","CC":"cc"}CompareDict(dict1,dict2)输出:AssertionError: 【Fail】 【AAAAA】!= 【AAAWAA】对比失败,字典1中 key【dict】对应值与字典2中key【dict】对应值,不相等=====================字典嵌套列表、字典对比=============== dict1 = {"AA":{"dict":"AAAAA"},"BB":[{"list":"dict"},"dd"],"CC":"cc"}dict2 = {"AA":{"dict":"AAAAA"},"BB":[{"list":"dict"},"dd"],"CC":"cc"}CompareDict(dict1,dict2)输出:字典中1 key为【BB】所嵌套的列表中元素【dd】类型不为字典,跳过判断字典中2 key为【BB】所嵌套的列表中元素【dd】类型不为字典,跳过判断【pass】 对比结束,两字典结构以及内容相同dict1 = {"AA":{"dict":"AAAAA"},"BB":[{"list":"dict"},"dd"],"CC":"cc"}dict2 = {"AA":{"dict":"AAAAA"},"BB":[{"list":"dict22"},"dd"],"CC":"cc"}CompareDict(dict1,dict2)输出:AssertionError: 【Fail】 【dict】!= 【dict22】对比失败,字典1中 key【list】对应值与字典2中key【list】对应值,不相等

评论列表暂无评论
发表评论
微信