Python deepdiff库怎么使用
这篇文章主要介绍“Python deepdiff库怎么使用”,在日常操作中,相信很多人在Python deepdiff库怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python deepdiff库怎么使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
deepdiff库
安装
pipinstalldeepdiff
说明
deepdiff模块常用来校验两个对象是否一致,并找出其中差异之处,它提供了:
deepdiff模块常用来校验两个对象是否一致,并找出其中差异之处,它提供了:
DeepDiff:比较两个对象,对象可以是字段、字符串等可迭代的对象
DeepSearch:在对象中搜索其他对象
DeepHash:根据对象的内容进行哈希处理
DeepDiff
作用:比较两个对象,对象可以是字段、字符串等可迭代的对象
说明:
type_changes:类型改变的key
values_changed:值发生变化的key
dictionary_item_added:字典key添加
dictionary_item_removed:字段key删除
对比json
#-*-coding:utf-8一*-#@Time:2023/4/16#@Author:DHfromdeepdiffimportDeepDiff#json校验json_one={'code':0,"message":"失败",'data':{'id':1}}json_two={'code':1,"message":"成功",'data':{'id':1}}print(DeepDiff(json_one,json_two))#输出"""{'values_changed':{"root['code']":{'new_value':1,'old_value':0},"root['message']":{'new_value':'成功','old_value':'失败'}}}root['code']:改变值的路径new_value:新值old_value:原值"""
列表校验
cutoff_distance_for_pairs: (1 >= float > 0,默认值=0.3);通常结合ignore_order=true使用,用于结果中展示差异的深度。值越高,则结果中展示的差异深度越高。
fromdeepdiffimportDeepDifft1=[[[1.0,666],888]]t2=[[[20.0,666],999]]print(DeepDiff(t1,t2,ignore_order=True,cutoff_distance_for_pairs=0.5))print(DeepDiff(t1,t2,ignore_order=True))#默认为0.3print(DeepDiff(t1,t2,ignore_order=True,cutoff_distance_for_pairs=0.2))"""{'values_changed':{'root[0][0]':{'new_value':[20.0,666],'old_value':[1.0,666]},'root[0][1]':{'new_value':999,'old_value':888}}}{'values_changed':{'root[0]':{'new_value':[[20.0,666],999],'old_value':[[1.0,666],888]}}}{'values_changed':{'root[0]':{'new_value':[[20.0,666],999],'old_value':[[1.0,666],888]}}}"""
忽略字符串类型
ignore_string_type_changes :忽略校验字符串类型,默认为False
print(DeepDiff(b'hello','hello',ignore_string_type_changes=True))print(DeepDiff(b'hello','hello'))"""输出:{}{'type_changes':{'root':{'old_type':<class'bytes'>,'new_type':<class'str'>,'old_value':b'hello','new_value':'hello'}}}"""
忽略大小写
ignore_string_case:忽略大小写,默认为False
fromdeepdiffimportDeepDiffprint(DeepDiff(t1='Hello',t2='heLLO'))print(DeepDiff(t1='Hello',t2='heLLO',ignore_string_case=True))"""输出:{'values_changed':{'root':{'new_value':'heLLO','old_value':'Hello'}}}{}"""
DeepSearch
作用:在对象中搜索其他对象 查找字典key/value
fromdeepdiffimportDeepSearchjson_three={'code':1,"message":"成功",'data':{'id':1}}#查找keyprint(DeepSearch(json_three,"code"))print(DeepSearch(json_three,"name"))#查找valueprint(DeepSearch(json_three,1))"""输出:{'matched_paths':["root['code']"]}{}{'matched_values':["root['code']","root['data']['id']"]}"""#正则use_regexpobj=["longsomewhere","string",0,"somewheregreat!"]#使用正则表达式item="some*"ds=DeepSearch(obj,item,use_regexp=True)print(ds)#强校验strict_checking默认Trueitem='0'ds=DeepSearch(obj,item,strict_checking=False)#ds=DeepSearch(obj,item)#默认Trueprint(ds)#大小写敏感case_sensitive默认False敏感item='someWhere'ds=DeepSearch(obj,item,case_sensitive=True)print(ds)
DeepHash
作用:根据对象的内容进行哈希处理
fromdeepdiffimportDeepHash#对对象进行hashjson_four={'code':1,"message":"成功",'data':{'id':1}}print(DeepHash(json_four))
extract
extract : 根据路径查询值
fromdeepdiffimportextract#根据路径查询值obj={1:[{'2':666},3],2:[4,5]}path="root[1][0]['2']"value=extract(obj,path)print(value)"""输出:666"""
grep
搜索
fromdeepdiffimportgrepobj=["longsomewhere","string",0,"somewheregreat!"]item="somewhere"ds=obj|grep(item)print(ds)#use_regexp为True表示支持正则obj=["somethinghere",{"long":"somewhere","someone":2,0:0,"somewhere":"around"}]ds=obj|grep("some.*",use_regexp=True)print(ds)#根据值查询路径obj={1:[{'2':'b'},3],2:[4,5,5]}result=obj|grep(5)print(result)"""输出:{'matched_values':['root[2][1]','root[2][2]']}"""
到此,关于“Python deepdiff库怎么使用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注主机评测网网站,小编会继续努力为大家带来更多实用的文章!
上一篇:Ant?Design?Vue?table组件怎么自定义分页器
下一篇:怎么去除PHP数组中的重复元素
winlogins.exe是什么文件?winlogins.exe是不是病毒
winsock2.6.exe是什么文件?winsock2.6.exe是不是病毒
WinDefendor.dll是什么文件?WinDefendor.dll是不是病毒
系统目录是什么文件?系统目录是不是病毒
wholove.exe是什么文件?wholove.exe是不是病毒
winn.ini是什么文件?winn.ini是不是病毒
w6oou.dll是什么文件?w6oou.dll是不是病毒
winduxzawb.exe是什么文件?winduxzawb.exe是不是病毒
wuammgr32.exe是什么文件?wuammgr32.exe是不是病毒
windiws.exe是什么文件?windiws.exe是不是病毒