我正在尝试在多个词典之间对值进行求和,例如:
oneDic = {'A': 3, 'B': 0, 'C':1, 'D': 1, 'E': 2}
otherDic = {'A': 9, 'D': 1, 'E': 15}
我想在oneDic
中找到otherDic
的值,如果在otherDic
中找到它们,并且 {{1>中的相应值小于特定值
oneDic = {'A': 3, 'B': 0, 'C':1, 'D': 1, 'E': 2}
otherDic = {'A': 9, 'D': 1, 'E': 15}
value = 12
test = sum(oneDic[value] for key, value in oneDic.items() if count in otherTest[count] < value
return (test)
我希望值为4,因为在C
中找不到otherDic
而E
中otherDic
的值不小于value
但是当我运行这段代码时,我得到了一个可爱的键错误,有人能指出我正确的方向吗?
答案 0 :(得分:1)
以下代码段有效。我不知道代码中的count
变量是什么:
oneDic = {'A': 3, 'B': 0, 'C':1, 'D': 1, 'E': 2}
otherDic = {'A': 9, 'D': 1, 'E': 15}
value = 12
test = sum(j for i,j in oneDic.items() if (i in otherDic) and (otherDic[i] < value))
print(test)
答案 1 :(得分:1)
这个怎么样
sum(v for k, v in oneDic.items() if otherDic.get(k, value) < value)
这里我们迭代k, v
对oneDic,只有otherDic.get(k, value)
的回复为< value
才包含它们。 dict.get
有两个参数,第二个是可选的。如果未找到密钥,则使用默认值。在这里,我们将默认值设置为value
,以便不包含otherDic
中缺少的密钥。
顺便说一下,获得KeyError
的原因是因为您尝试通过执行B and C
和otherDic['B']
在迭代中的某个时间点访问otherDic['C']
是KeyError
。但是,在.get
中使用otherDic.get('B')
将返回默认值None
,因为您没有提供默认值 - 但它不会有KeyError