我正在努力将两个python词典链接在一起的代码:
d1 = {'a':'Apple','b':'Banana'}
d2 = {'Apple':'Pomme','Banana':'Banane'}
我想创建一个新词典d3,其中'a'是值'Pomme'的键,'b'是值'Banane'的键。
d3 = {'a':'Pomme','b':'Banane'}
非常感谢任何指导。
答案 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'