链接两个python词典

时间:2018-06-04 14:02:31

标签: python dictionary

我正在努力将两个python词典链接在一起的代码:

d1 = {'a':'Apple','b':'Banana'}
d2 = {'Apple':'Pomme','Banana':'Banane'}

我想创建一个新词典d3,其中'a'是值'Pomme'的键,'b'是值'Banane'的键。

d3 = {'a':'Pomme','b':'Banane'}

非常感谢任何指导。

2 个答案:

答案 0 :(得分:8)

使用词典理解:

d3 = {k: d2[v] for k, v in d1.items()}

答案 1 :(得分:1)

如果您想要动态链接,则表示如果您希望新映射反映对原始dicts所做的更改,则可以从collections.abc.Mapping派生一个类:

class DLinker(collections.abc.Mapping):
    def __init__(self, d1, d2):
        self.d1 = d1
        self.d2 = d2
    def __len__(self):
        return len(self.d1)
    def __getitem__(self, item):
        return d2[d1[item]]
    def __iter__(self):
        return iter(d1)

然后您可以使用:

>>> d3 = DLinker(d1, d2)
>>> for i in d3:
    print(i, d3[i])


a Pomme
b Banane
>>> d1['c'] = 'Pear'
>>> d2['Pear'] = 'Poire'
>>> d3['c']
'Poire'