我正在寻找一种方法来比较/替换字典的值与另一个字典的键,如下所示:
DicA = {'abc' : 1 , 'def' : 2 , 'ghi' : 3}
DicB = {3: 'klm' , 2 : 'nop' ,1 : 'qrs'}
结果应该是:
DicC = {'abc' : 'qrs' , 'def' : 'nop' ,'ghi' : 'klm'}
因此DicA
中的值“1”被替换为“qrs”,因为它们键入DicB(1)
与DicA(1)
中的值匹配,因此结果为 - > abc:qrs。
如何将密钥与另一个字典的值进行比较?(for loops)?
之后如何更换?
有没有办法使用已实现的map()函数? E.g。
map(lambda dicA, dicB):
答案 0 :(得分:1)
你可以用字典理解来做到这一点:
dicA= {'abc': 1, 'def': 2, 'ghi': 3}
dicB= {3: 'klm', 2: 'nop', 1: 'qrs'}
dicC = {key: dicB[val] for key, val in dicA.items()}
但是,如果dicB
没有dicA
中某个项目的密钥,则会失败。你可以使用接受默认值的get
字典方法解决这个问题,正如MCBama所指出的那样。
dicA = {'abc': 1, 'def': 2, 'ghi': 3}
dicB = {2: 'nop', 1: 'qrs'}
dicC = {key: dicB.get(val,"") for key, val in dicA.items()}
# {'abc': 'qrs', 'def': 'nop', 'ghi': ''}