Recevez des conseils d'experts et un soutien communautaire sur Zoofast.fr. Notre plateforme interactive de questions-réponses fournit des réponses rapides et précises pour vous aider à résoudre vos problèmes.

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)

Votre participation est très importante pour nous. Continuez à partager des informations et des solutions. Cette communauté se développe grâce aux contributions incroyables de membres comme vous. Vous avez des questions? Zoofast.fr a les réponses. Merci pour votre visite et à bientôt.