👤

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)

© 2024 IDNLearn. All rights reserved.