字典里字符串的转换 怎么修改呜

这个方程式用来计算两个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

是字典中字符串转换出了问题吗?怎么修改?

img

把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)