Python 比较两个DICT之间键共用时的值

Python 比较两个DICT之间键共用时的值,python,Python,当我试图比较每个键的两个公共值时,我不明白为什么我的代码不起作用: dict1 = {'test A': 'abc,bcd,edf', 'test b': 'bcd,edf', 'test c': 'pok,pub'} dict2 = {'test A': 'abc,bcd', 'test b': 'edf'} def diff_dict(self, dict1, dict2): return {x: dict2[x] - dict1[x] for x in dict1 if x in

当我试图比较每个键的两个公共值时,我不明白为什么我的代码不起作用:

dict1 = {'test A': 'abc,bcd,edf', 'test b': 'bcd,edf', 'test c': 'pok,pub'}
dict2 = {'test A': 'abc,bcd', 'test b': 'edf'}

def diff_dict(self, dict1, dict2):
    return {x: dict2[x] - dict1[x] for x in dict1 if x in dict2}
错误:

TypeError:-:“str”和“dict”的操作数类型不受支持
预期产出:

out = {'test A' : 'edf', 'test B': 'bcd'}

行中的
-
操作数返回{x:dict2[x]-dict1[x]表示dict1中的x,如果dict2中的x}
尝试减去两个字符串

这将不起作用,因为没有为字典或字符串定义减法。但是,它是为集合定义的。因此,一种解决方案是将字符串转换为集合,找出差异,然后将其转换回列表:

def diff_dict(dict1, dict2):
    return {x: ",".join(list(set(dict1[x].split(",")) - set(dict2[x].split(",")))) for x in dict1 if x in dict2}

你到底想做什么还不清楚。相反,如果您试图查找由同一键表示的值,则应使用
^
而不是
-

什么是
dict1
dict2
?显示数据以使其可复制。在
dict2
中,当
dict1
包含字典时,由键
x
存储的值是字符串。@schwobaseggl我刚刚编辑了我得到的错误
TypeError:不支持的操作数类型-:“str”和“str”
,而不是您发布的操作数类型。这个错误是因为你基本上是在对第一个键执行“abc,bcd,edf”-“abc,bcd”。您使用的是哪个版本的Python?是否有多余的括号需要删除?将来,将问题归结为实际问题。你可以问一下,“如何比较
'abc,bcd,edf'-'abc,bcd'
来生成
'edf'
。不需要听写理解等。谢谢你的反馈。实际上,问题是split不能与dict一起工作。。。当我尝试这段代码时,我得到了
AttributeError:“dict”对象没有属性“split”
您给我们的dict1和dict2与您给的完全一样吗?