我有两对相当大的词组。对序列的结构完全相同,但值会有所不同。所有对都有不同的嵌套方式。
澄清:
dict_a
与dict_b
dict_c
与dict_d
具有相同的结构(但与dict_a和dict_b不同)等。
是否有工具可以轻松实现一个功能来比较值,和/或对它们进行一些基本的算术运算?我的dicts可以完全嵌套,所以简单的[for k,v in dict_x.iteritems()...]
不会。
答案 0 :(得分:0)
听起来像......递归函数的问题!
基本上,如果我理解你的问题,你就会在未指定的键上有一个深度字典,深度不同。您想比较dict_a
与dict_b
的值,但不关心键:只是值的差异。这是一个使用递归函数打印出不匹配的每组值的想法。
def dict_compare(da, db):
for k, v in da.iteritems():
if isinstance(v, dict): #if the value is another dict:
dict_compare(v, db[k]) #enter into the comparison function again!
else:
if v != db[k]:
print 'values not equal at', k
然后你就可以打电话了
dict_compare(dict_a, dict_b)
奇妙的是,如果给定键的值实际上是另一个字典,只需再次调用您的比较函数。
显然,如果你想做的事情比打印不匹配的值的简单键更复杂,只需修改if v != db[k]
行之后发生的事情。