这个方程式用来计算两个A.B两个字典中相同的key的差值,如果差值是0则忽略。比如:A = {'s': 4, 'm': 1, 'p': 2, 'i': 4},B = {'e': 1, 's': 3, 'm': 1, 'p': 1, 'i': 2, 't': 1} 则输出:{'s' : 1, 'p' : 1, 'i' : 2}
我的代码运行上述输入,得到的错误是
File "C:\Users\Lenovo\Desktop\count_dict_difference.py", line 9, in count_dict_difference
adict.update(eval(key))
File "", line 1, in
NameError: name 's' is not defined
是字典中字符串转换出了问题吗?怎么修改?
把eval删掉,然后键值对要写在一起放在update里:
if abs(value-value2)!=0:
adict.update({key:abs(value-value2)})
#adict.update(abs(value-value2))
不用两次循环,你需要找相同的,只循环一个字典就行
A = {'s': 4, 'm': 1, 'p': 2, 'i': 4}
B = {'e': 1, 's': 3, 'm': 1, 'p': 1, 'i': 2, 't': 1}
res={}
for key in A:
if B.get(key,None):
res[key] = abs(A[key]-B[key])
print(res)
def test():
A = {'s': 4, 'm': 1, 'p': 2, 'i': 4}
B = {'e': 1, 's': 3, 'm': 1, 'p': 1, 'i': 2, 't': 1}
# {'s' : 1, 'p' : 1, 'i' : 2}
adict = {}
for k1, v1 in A.items():
for k2, v2 in B.items():
if k1 == k2:
if abs(v1 - v2) != 0:
adict[k1] = abs(v1 - v2)
print(adict)