我想比较python中的字典。我知道我可以简单地做a == b
,如果a
和b
是字典的话。这也适用于嵌套字典,其中a和b包含字典本身。但是,如果a和b包含大于1:的numpy数组,则不起作用
import numpy as np
a = {"1": np.array([1, 2])}
b = {"1": np.array([1, 2])}
a == b
我得到这个错误:
Traceback(上次调用(:
ValueError中的文件",第1行:具有多个元素的数组的真值不明确。使用.any((或.all((
我确实检查了:这篇文章,发现了来自sumbudu的import deepdiff
的建议,这正是我想要的。然而,有没有一种更简单的方法可以使用==
并以某种方式捕捉错误?
这样?
def equal_dictionaries(dic1, dic2):
for key, value in dic1.items():
key1 = key
value1 = value
for key, value in dic2.items():
key2 = key
value2 = value
if np.array_equal(value1, value2) == False or key1 != key2:
return False
else:
return True