0
votes

Comment générer un dictionnaire à partir de deux autres dictionnaires?

Si

d1 = {'Mercure': 10, 'Vénus': 20, 'Terre': 30, 'Mars': 40}

et

d2 = {'Dix': 'M', 'Vingt': 'V', 'Trente': 'E', 'Quarante': 'F'}

alors comment générer un nouveau dictionnaire où les clés appartiennent à d1 et les valeurs appartiennent à d2, similaire au dictionnaire suivant:

newD = {'Mercure': 'M', 'Vénus': 'V', 'Earth': 'E', 'Mars': 'F'}

Comment le faire par la compréhension, les boucles ou tout autre moyen?

Merci.


1 commentaires

Quel est exactement votre plan pour expliquer à Python comment associer 10 à 'Ten' etc.?


3 Réponses :


3
votes

Si l'association est basée sur la commande, vous pouvez utiliser zip:

>>> 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'}

Si vous souhaitez associer en fonction de 10 - > 'Ten' etc, num2words devrait fonctionner:

>>> 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'}


0 commentaires

0
votes

Voici comment utiliser la méthode zip () pour compresser les clés de d1 avec les valeurs de d2 :

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

Résultat:

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)


0 commentaires

0
votes
{list(d1.keys())[k]:list(d2.values())[k] for k in range(len( d1.keys()) )}

0 commentaires