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数组中的重复元素


Copyright © 2002-2019 测速网 www.inhv.cn 皖ICP备2023010105号
测速城市 测速地区 测速街道 网速测试城市 网速测试地区 网速测试街道
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!

热门搜索 城市网站建设 地区网站制作 街道网页设计 大写数字 热点城市 热点地区 热点街道 热点时间 房贷计算器