比较两个字典值并更新字典 [英] compare two dict values and update in dict
问题描述
我有疑问要比较两个字典之间的价值。我正在与 jarname jarverion进行比较。在两个字典上。如果相同,则需要将其更新为 true。在dict1部分(如果版本不同)中,我需要在dict1.Overwrite部分中设置false。
I have question to compare value between two dicts. I am comparing with "jarname""jarverion" on both dict. If its same , i need to update as "true" in dict1 section if its different version , i need to set false in dict1.Overwrite section.
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
I comparing dict1 "jarverion""jarname" with dict2 dict using below code.
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)
但是此代码不起作用,我正在获取
But this code is not working , i am getting
if cmp_value(eachval, "%s%s"%(val['jarname'], val['jarversion'])):
KeyError: 'jarname'
任何人都可以在这里帮助我。
Can anyone help me here.
推荐答案
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'}], }}
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():
for eachval in res:
for i in val['jar']:
if cmp_value(eachval, "%s%s" % (i['jarname'], i['jarversion'])):
i['overwrite'] = 'true'
break
else:
if 'overwrite' not in i:
i['overwrite'] = 'false'
print(dict1)
输出:{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.0','jarname':'jar4.jar','overwrite':'false'},{'jarversion':'2.0','jarname':'jar2.jar','overwrite':'true '}]}}
output: {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.0', 'jarname': 'jar4.jar', 'overwrite': 'false'}, {'jarversion': '2.0', 'jarname': 'jar2.jar', 'overwrite': 'true'}]}}
这篇关于比较两个字典值并更新字典的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!