链接两个 python 字典



我正在努力将两个python字典链接在一起:

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

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

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

任何指导将不胜感激。

使用字典理解:

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

如果你想要一个动态链接,意味着如果你想让新的映射反映对原始字典所做的更改,你可以从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'

最新更新