Bienvenue sur Laurentvidal.fr, la meilleure plateforme de questions-réponses pour trouver des réponses précises et rapides à toutes vos questions. Explorez des réponses détaillées à vos questions de la part d'une communauté d'experts dans divers domaines. Expérimentez la commodité de trouver des réponses précises à vos questions grâce à une communauté dévouée d'experts.

Bonjour
Je suis bloque sur un exercice en python pouvez vous m'aider s'il vous plait
écrire une fonction qui prend pour entrée 1,2 ou 3
dictionnaire et retourne un dictionnaire fusionnant les informations de ces dictionnaires de la manières suivante pour chaque clef présente dans au moins un dictionnaire la valeur
associée sera la plus petite des valeurs associées à cette clef dans les dictionnaires passés en argument à la fonction.

voici les dictionnaires

dict1 = {"a": 1, "d": 4, "g": 7 }

dict2 = {"a": 1, "d": 2, "g": 8 }

dict3 = {"a": 2, "d": 3, "g": 9 }

la fonction doit renvoyer

{'a': 1, 'd': 2, 'g': 7, 'h': 8, 'c': 3}

Sagot :

caylus

Réponse :

Explications :

écrire une fonction qui prend pour entrée 1,2 ou 3

dictionnaire et retourne un dictionnaire fusionnant les informations de ces dictionnaires de la manières suivante pour chaque clef présente dans au moins un dictionnaire la valeur

associée sera la plus petite des valeurs associées à cette clef dans les dictionnaires passés en argument à la fonction.

Comme le nombre de dictionnaires peut être variable,

il faut envoyer un paramètre utilisant une liste de listes.

def merge_dic(*lesDic, merge_fn=lambda x,y: min(x,y) ):

...theRep=dict()

...for i in lesDic:

... ...theRep=merge_2(theRep,i,merge_fn)

... return theRep

def merge_2(d1, d2, merge_fn=lambda x,y:y):

... result = dict(d1)

... for k,v in d2.items():

... ... if k in result:

... ... ... result[k] = merge_fn(result[k], v)

... ... else:

... ... ... result[k] = v

... return result

# main-----------------

dict1 = {"a": 1, "d": 4, "g": 7 }

dict2 = {"a": 1, "d": 2, "g": 8 }

dict3 = {"a": 2, "d": 3, "g": 9 }

union=merge_dic(dict1)

print ("union 1=",union)

union=merge_dic(dict1,dict2)

print ("union 2=",union)

union=merge_dic(dict1,dict2,dict3)

print ("union 3=",union)