我有一个问题要比较两个字典的值。我正在比较两个dict上的“jarname”“jarverion”。如果它相同,我需要在dict1部分更新为“true”。如果它的版本不同,我需要在dict1.Overwrite部分设置false
dict2={'partname1': { 'jarversion':'1.0','jarname':'jar1.jar'},'partname2': { 'jarversion':'2.0','jarname':'jar2.jar'},'partname3': {'jarversion': '3.0','jarname':'jar3.jar'}}
dict1={1:{'partition_name' : 'avs', 'jar':[{'jarversion':'1.0','jarname':'jar1.jar'},{'jarversion':'5.0','jarname':'jar5.jar'}]},2:{'partition_name' : 'ivs', 'jar':[{'jarversion':'4.0','jarname':'jar4.jar'},{'jarversion':'2.0','jarname':'jar2.jar'}],}}
我使用下面的代码比较dict1“jarverion”“jarname”和dict2 dict
res=[]
for _, v in dict2.items():
res.append(v['jarname'] + v['jarversion'])
def cmp_value( rstring='',lstring=''):
print('rstring',rstring)
print('lstring',lstring)
if rstring == lstring:
return True
else:
return False
for key, val in dict1.items():
print(val)
for eachval in res:
if cmp_value(eachval, "%s%s"%(val['jarname'], val['jarversion'])):
dict1[key].update({"overwrite": "true"})
break
else:
dict1[key].update({"overwrite": "false"})
print (dict1)
但是这个代码不起作用,我得到
if cmp_value(eachval, "%s%s"%(val['jarname'], val['jarversion'])):
KeyError: 'jarname'
有人能帮我吗
for key, val in dict1.items()
行迭代键(整数)和值(字典)的元组在产生错误的行中,在
key=1
的情况下,val
的内容如下:您要求此字典返回与键
jarname
关联的值。由于字典没有该键,因此会抛出一个错误。如上所示,val
的唯一有效键是partition_name
和jar
输出:{1:{'partition_name':'avs','jar':[{'jarversion':'1.0','jarname':'jar1.jar','overwrite':'true'},{'jarversion':'5.0','jarname':'jar5.jar','overwrite':'false'}},2:{'partition_name':'ivs','jar':[{'jarversion':'4.jar','overwrite':'false'},{'jarversion':'2.0','jarname':'jar2.jar','overwrite':'true'}]}
相关问题 更多 >
编程相关推荐