有3个词典。我想将“标准”与“规则”进行比较,如果发生任何匹配,请将其添加到“ mydict”中。
criteria = {
'no_of_EG': 2,
'no_of_VG': 2,
'no_of_G': 1,
'no_of_SG': 0,
'no_of_A': 0,
'no_of_SP': 0,
'no_of_P': 0,
'no_of_VP': 0,
'no_of_EP': 1}
rules = {
'no_of_EG' : (6,5,4,3),
'no_of_EP' : (3,2,1),
'no_of_VG' : (6,5,4,3),
'no_of_G' : (6,5,4,3,2,1),
'no_of_SG' : (6,5),
'no_of_A' : (6,),
'no_of_SP' : (3,2,1)}
mydict = {
'no_of_EG' : 0,
'no_of_VG' : 0,
'no_of_G' : 0,
'no_of_SG' : 0,
'no_of_A' : 0,
'no_of_SP' : 0,
'no_of_P' : 0,
'no_of_VP' : 0,
'no_of_EP' : 0}
mydict = {k: criteria[k] for k in criteria if k in rules and criteria[k] == rules[k]}
print("SELECTED RULES ARE:",mydict)
我该如何更新以上声明。因为它仅适用于在“规则”中包含单个值的键。但是在“规则”中,我的键拥有多个值。
预期输出:
mydict = {
'no_of_EG' : 0,
'no_of_VG' : 0,
'no_of_G' : 1,
'no_of_SG' : 0,
'no_of_A' : 0,
'no_of_SP' : 0,
'no_of_P' : 0,
'no_of_VP' : 0,
'no_of_EP' : 1}
答案 0 :(得分:0)
1)我想您希望使用in
而不是==
。
2)如果您要更新值,则需要调用.update(...)
而不分配新的dict
。
mydict.update({k: criteria[k] for k in criteria if k in rules and criteria[k] in rules[k]})
如果您对此有控制权,那么您的rules
应该是sets
而不是tuples
。