python - 是否可以在不知道键的情况下排除 deepdiff 中的字典路径

标签 python python-3.x dictionary

我有 2 个字典,我想得到它们的差异。为此,我使用 deepDiff module这非常好。可以添加参数“exclude_paths”,但问题是我想排除一个我不知道的路径,因为我的字典太大了。

喜欢:

root['thiskeyiknow']['idontknowthiskey']['idontknowthiskey']['iknowthiskey']

有没有办法排除所有像这样的路径:

root['thiskeyiknow']['everykeyispossiblehere']['everykeyispossiblehere']['thiskeyshouldbeexcluded']

在unix中,*代表一切...Python中是否有东西说:“这里可以有任何东西,只需将其放入即可?”

我已经尝试过这样的事情:

root['key1']['']['']['keyiwanttoexclude']

但是没有成功。

所以如果我有这样的字典:

dict1 = {"key1":{key2:{key3:{key4: "bla"}}}}
dict2 = {"key1":{key2:{key3:{key4: "fasl"}}}}


excludePaths = [

    "root['key1'][all][all]['key4']"

]

diff = deepdiff.DeepDiff(dict1,dict2,exclude_paths=excludePaths)

输出应该是:

{}

输出不应该是:

{" root['key1']['key2']['key3']['key4']" : {

'new_value' = 'bla'
'old_value' = 'fasl'

}

最佳答案

所以我能够做到。

解决方案:

使用排除的正则表达式字符串创建列表:

经验:

excludedRegex = [
     r"root['key1'][.+?][.+?]['key4']"
     etc.
]

然后将排除列表添加到deepdict

diff = deepdiff.DeepDiff(dict1,dict2,exclude_regex_paths=excludeRegex)

这就是所需要的

关于python - 是否可以在不知道键的情况下排除 deepdiff 中的字典路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57324931/

相关文章:

python - _tkinter.TclError : image "..." doesn't exist

python - 对 HTML 文件中表的第 1 列和第 3 列中的数据进行匿名化

python-3.x - 如何在大数据集(Train、Dev、Test)上使用 CountVectorizer 和 TfidfTransformer?

python-3.x - Kivy .kv 文件使用外部文件中定义的函数

python - 将字典条目转换为变量

python - 如何将图像压缩为 tf.data.Dataset 中的目标图像

python - 如何将代码对象保存在文件中?

python - for循环中的.Split()不返回列表

python - 替换文本中的字符串并忽略某些部分

python - 一键创建字典列表列表