Связывание двух словарей Python - PullRequest
0 голосов
/ 04 июня 2018

Я бьюсь над кодом, чтобы связать вместе два словаря python:

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

Я хочу создать новый словарь d3, где 'a' является ключом для значений 'Pomme' и 'b'является ключом к значению' Banane '.

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

Любое руководство будет с благодарностью.

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Если вы хотите динамическое связывание, это означает, что если вы хотите, чтобы новое отображение отражало изменения, внесенные в исходные диктанты, вы можете получить класс из 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'
0 голосов
/ 04 июня 2018

Использование словарного понимания:

d3 = {k: d2[v] for k, v in d1.items()}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...