Python:理解组成两个词典

Rom*_*149 8 python

我正在尝试编写一个理解,它将以下列方式组成两个字典:

d1 = {1:'a',2:'b',3:'c'}
d2 = {'a':'A','b':'B','c':'C'}
result = {1:'A',2:'B',3:'C'}
Run Code Online (Sandbox Code Playgroud)

也就是说,所得到的字典由第一个的键和每个第二个的值形成,其中第一个的值等于第二个的键.

这是我到目前为止所得到的:

{ k1:v2 for (k1,v1) in d1 for (k2,v2) in d2 if v1 == k2 }
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我是Python的新手,所以我不确定这是否真的有意义.顺便说一句,我正在使用python 3.3.2.

提前致谢.

Pet*_*per 10

一种方法是:

result = {k: d2.get(v) for k, v in d1.items()}
Run Code Online (Sandbox Code Playgroud)

对于值不在d2中的键,您想要什么行为?


pok*_*oke 6

只需循环遍历项目,d1然后对于要放入结果的每个元素,不要使用值,d1而是d2使用d1值作为键查找新值:

>>> d1 = {1: 'a', 2: 'b', 3: 'c'}
>>> d2 = {'a': 'A', 'b': 'B', 'c': 'C'}
>>> d = {k: d2[v] for (k, v) in d1.items()}
>>> d
{1: 'A', 2: 'B', 3: 'C'}
Run Code Online (Sandbox Code Playgroud)