Comparer deux dictionnaires [Résolu]

Signaler
-
 Fredlesarde -
Bonjour,

Je voudrais lister les clés d'un dictionnaire d1, puis les comparer avec les valeurs d'un autre dictionnaire d2 et enfin établir une liste des clés de d2 correspondantes avec les valeurs de d1.. Exemple:

d1 = {"332P200005":"E34-789", "332P200006":"E34-788",  "332P200007":"E34-785", "332P200008":"E34-705" }

d2 = {"E34-789":"1", "E34-788":"1", "E34-700":"1", "E34-702":"1", "E34-703":"1", "E34-704":"1", "E34-705":"1"}


Je voudrais une liste ou autre contenant les clés de d1 qui ont pour valeur la clé d2.
par exemple je vois dans d2 la clé "E34-789" qui est bien présente dans une des valeurs de d1.
en revanche la clé "E34-704" dans d2 n'est pas présente dans les valeurs d1. Donc la clé (d1) correspondante ne m'intéresse pas.

J'espère avoir été assez clair, merci pour votre aide.


Configuration: Windows / Firefox 88.0

2 réponses

Messages postés
15486
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 mai 2021
846
bonjour,
as-tu une question?
je pense que ceci t'aidera: http://www.w3big.com/fr/python/att-dictionary-has_key.html
Messages postés
15486
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 mai 2021
846
ce serait plus clair si tu montrais la réponse que tu attends pour l'exemple.

tu écris "la clé "E34-704" dans d2 n'est pas présente dans les valeurs d1. Donc la clé (d1) correspondante ne m'intéresse pas" quelle est la clé correspondante?
>
Messages postés
15486
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 mai 2021

je voudrais en sortie:

liste = [332P200005,332P200006,332P200008] 

# dans cette liste, ces valeurs font bien partie d'au moins une des clés dans d2


# dans d1, la dernière clé 332P200007 ne m'intéresse pas car # sa valeur n'apparait pas dans une des clés d2


Je ne sais pas si c'est plus clair..
Messages postés
15486
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 mai 2021
846 > Fredlesarde
cela devient plus correct.
un exemple:
def y(dun,ddeux):
    r=[]
    for k1 in dun:
        if dun[k1] in ddeux:
            r.append(k1)
    return r
dd1 = {"332P200005":"E34-789", "332P200006":"E34-788",  "332P200007":"E34-785", "332P200008":"E34-705" }
dd2 = {"E34-789":"1", "E34-788":"1", "E34-700":"1", "E34-702":"1", "E34-703":"1", "E34-704":"1", "E34-705":"1"}
print(y(dd1,dd2))
C'est génial !! merci pour ton aide !