按另一个字典中的值获取一个字典的值时发生Getting Keyerror



代码:

dict1 ={"a:b":"w","cd":"x","ef":"y","gh":"z"}
dict2 ={"a:b":"l","cd":"m","ef":"n","gh":"o"}
dict3 = {v:dict1[k] for k,v in dict2.iteritems()} 

预期输出:

dict3 = {"l":"w","m":"x","n":"y","o":"z"}
print dict3

我得到的:

Traceback (most recent call last):
File "all.py", line 45, in <module>
dict3 = {v:dict1[k] for k,v in dict2.iteritems()}  
File "all.py", line 45, in <dictcomp>
dict3 = {v:dict1[k] for k,v in dict2.iteritems()}  
KeyError: 'a:b'

我希望dict3{k(value of dict2):v(values of dict1)}//检查我上面写的预期输出,以便更好地理解。我该如何解决此问题?

注意:"a:b"是密钥,我的大多数密钥在keyname

中都有:签名

第二个dict中可能没有完全相同的键,尽管键的总数可能不同。此外,原始代码适用于给定的样本数据。

目前,您可以使用.get调用来消除错误,而不是直接访问密钥:

dict1 ={"a:b":"w","cd":"x","ef":"y","gh":"z"}
dict2 ={"a:b":"l","cd":"m","ef":"n","gh":"o"}
dict3 = {v:dict1.get(k) for k,v in dict2.iteritems()}

如果您打印dict3,您应该找到一些值为None的键(当找不到键时,None.get的默认值)。

最新更新