dic1 = {'memory':'4','cpu':'2','disk':{'total':'160','swap':'4','/':'26','/var':'7','/tmp':'2'}}
dic2 = {'memory':8','cpu':'2','disk':{'total':'120,'swap':'4','/':'26','/var':'7','/tmp':'2'}}
请注意,这两个词典本身都包含另一个词典。 在不执行dict1 == dict2的情况下比较每个项目的最有效方法是什么?
因为我必须看到值的一些%变化。所以剩下的唯一选择是遍历每个字典项。类似的东西:
for key1 in dic1:
for key2 in dic2:
if not isinstance(dic1[key1],dict):
#compare cpu & memory here
if int(dic1[key1]) > int(dict2[key2])
else:
#compare disk(internal dictionary here)
答案 0 :(得分:0)
您可以使用itertools.zip_longest
压缩值并在列表解析中对它们进行比较:
>>> from itertools import chain,zip_longest
["do something" if isinstance(i,dict) and all(k<v for k,v in zip_longest(i.values(),j.values())) else "do something" for i,j in zip_longest(dic1.values(),dic2.values())]
请注意,根据您的需要,您可以使用其他函数而不是all
您可能有兴趣使用any
,或者您可能希望对值进行一些算术运算。