👤

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}


Répondre :

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)

Merci d'avoir visité notre site Web dédié à Informatique. Nous espérons que les informations partagées vous ont été utiles. N'hésitez pas à nous contacter si vous avez des questions ou besoin d'assistance. À bientôt, et pensez à ajouter ce site à vos favoris !


En Studier: D'autres questions