Как сгенерировать словарь из двух других словарей? - PullRequest
0 голосов
/ 12 июля 2020

Если

d1 = {'Mercury': 10, 'Venus': 20, 'Earth': 30, 'Mars': 40}

и

d2 = {'Ten': 'M', 'Twenty': 'V', 'Thirty': 'E', 'Forty': 'F'}

, то как сгенерировать новый словарь, где ключи принадлежат d1 и значения принадлежат d2, аналогично следующему словарю:

newD = {'Mercury': 'M', 'Venus': 'V', 'Earth': 'E', 'Mars': 'F'}

Как это сделать с помощью понимания, циклов или любым другим способом?

Спасибо.

Ответы [ 3 ]

3 голосов
/ 12 июля 2020

Если ассоциация основана на порядке, вы можете использовать zip:

>>> d1 = {'Mercury': 10, 'Venus': 20, 'Earth': 30, 'Mars': 40}
>>> d2 = {'Ten': 'M', 'Twenty': 'V', 'Thirty': 'E', 'Forty': 'F'}
>>> {k: v for k, v in zip(d1.keys(), d2.values())}
{'Mercury': 'M', 'Venus': 'V', 'Earth': 'E', 'Mars': 'F'}

Если вы хотите ассоциировать на основе 10 -> 'Ten' et c, num2words должно работать:

>>> from num2words import num2words
>>> d1 = {'Mercury': 10, 'Venus': 20, 'Earth': 30, 'Mars': 40}
>>> d2 = {'Ten': 'M', 'Twenty': 'V', 'Thirty': 'E', 'Forty': 'F'}
>>> {k: d2[num2words(v).title()] for k, v in d1.items()}
{'Mercury': 'M', 'Venus': 'V', 'Earth': 'E', 'Mars': 'F'}
0 голосов
/ 12 июля 2020
{list(d1.keys())[k]:list(d2.values())[k] for k in range(len( d1.keys()) )}
0 голосов
/ 12 июля 2020

Вот как вы можете использовать метод zip(), чтобы закрепить ключи d1 со значениями d2:

d1 = {'Mercury': 10, 'Venus': 20, 'Earth': 30, 'Mars': 40}
d2 = {'Ten': 'M', 'Twenty': 'V', 'Thirty': 'E', 'Forty': 'F'}

newD = dict(zip(d1,d2.values()))
print(newD)

Вывод:

{'Mercury': 'M', 'Venus': 'V', 'Earth': 'E', 'Mars': 'F'}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...