J'ai les dictionnaires suivants:
{'a': [550.0, 1.0, 550.0], 'b': [157.65, 150.0, 23648.64]}
Personale_result
a été obtenu avec le code suivant:
defaultdict(<class 'list'>, {'a': [550.0, 1.0, 550.0], 'b': [157.65, 150.0, 23648.64]})
Je souhaite créer une nouvelle variable, appelée valeur_finale
qui, pour chaque clé (en les faisant correspondre dans le dictionnaire), résume les trois dictionnaires en me donnant le résultat suivant:
from collections import defaultdict personale_dip = {'a': [550.0], 'b': [157.65]} personale_dip_costo = {'a': [1.0], 'b': [150.0]} personale_result = {'a': 550.0, 'b': 23648.64} data = defaultdict(list) for d in [personale_dip, personale_dip_costo, personale_result]: for k, v in d.items(): if isinstance(v, list): data[k].extend(v) else: data[k].append(v)
3 Réponses :
RÉPONSE 2.0
>>> {'a': [550.0, 1.0, 550.0], 'b': [157.65, 150.0, 23648.64]}
SORTIE
personale_dip={'a': [550.0], 'b': [157.65]} personale_dip_costo={'a': [1.0], 'b': [150.0]} personale_result={'a': 550.0, 'b': 23648.64} final_value = {} for dictionary in [personale_dip, personale_dip_costo, personale_result]: for k,v in dictionary.items(): # if the key is there, then # check whether it a list or a normal string # if list add it like [] + [] # if not then add it like [] + [v] if k in final_value: if isinstance(v, type([])): final_value[k] += v else: final_value[k] += [v] else: if isinstance(v, type([])): final_value[k] = v else: final_value[k] = [v] print(final_value)
Ceci est modifié, et vous donne ce que vous voulez.
Eh bien, vous étiez sur la bonne voie. Personnellement, je les fusionnerais simplement:
>>> final_result {'a': [550.0, 1.0, 550.0], 'b': [157.65, 150.0, 23647.5]}
Avec votre entrée, cela vous donnera:
final_value = {} for key in personale_result: final_value[key] = (personale_dip[key][0], personale_dip_costo[key][0], personal_result[key])
Désormais, personale_dip et personale_dip_costo sont de type {string , liste}. Actuellement, votre personale_result ignorera simplement les autres valeurs de cette liste, de même que final_result.
personale_dip = {'a': [550.0], 'b': [157.65]} personale_dip_costo = {'a': [1.0], 'b': [150.0]} personale_result = dict() for key_pd in personale_dip: if key_pd in personale_dip_costo.keys(): personale_result[key_pd] = [personale_dip[key_pd][0], personale_dip_costo[key_pd][0], personale_dip[key_pd][0]*personale_dip_costo[key_pd][0]] This code should work considering the list inside the dict contains only 1 element. This will work even if personale_dip has more elements or vice versa.
what_you_want = dict (data.items ())
? Un defaultdict est juste un dict avec du sucre en haut ... pourquoi ne pas garder le defaultdict?Hé, j'ai édité ma réponse, pouvez-vous vérifier si cela vous est utile :)