Ajouter des dictionnaires ensemble, Python [dupliquer]

cette question a déjà une réponse ici:

j'ai deux dictionnaires et j'aimerais pouvoir en faire un:

quelque chose comme ce pseudo-Python serait bien:

dic0 = {'dic0': 0}
dic1 = {'dic1': 1}

ndic = dic0 + dic1
# ndic would equal {'dic0': 0, 'dic1': 1}
69
demandé sur rectangletangle 2011-05-15 02:04:11

6 réponses

si vous êtes intéressé à créer un nouveau dict sans utiliser de stockage intermédiaire: (c'est plus rapide, et à mon avis, plus propre que l'utilisation de dict.items ())

dic2 = dict(dic0, **dic1)

ou si vous êtes heureux d'utiliser l'un des dicts existants:

dic0.update(dic1)
126
répondu bluepnume 2013-12-28 22:18:15
>>> dic0 = {'dic0':0}
>>> dic1 = {'dic1':1}
>>> ndic = dict(dic0.items() + dic1.items())
>>> ndic
{'dic0': 0, 'dic1': 1}
>>>
13
répondu Vijay 2011-05-14 22:14:14

vous recherchez la méthode de mise à jour

dic0.update( dic1 )
print( dic0 ) 

donne

{'dic0': 0, 'dic1': 1}
9
répondu Mark 2011-05-14 22:10:59

Voici quelques façons d'ajouter des dictionnaires.

crée un nouveau dict en ajoutant les deux éléments.

ndic = dict(dic0.items() + dic1.items())

si votre ok pour modifier dic0

dic0.update(dic1)

Si votre PAS ok pour modifier dic0

ndic = dic0.copy()
ndic.update(dic1)

si toutes les clés d'un dict sont assurées d'être des cordes ( dic1 dans ce cas, bien sûr args peut être échangé)

ndic = dict(dic0, **dic1)

dans certains cas, il peut être pratique d'utiliser des compréhensions dict (Python 2.7 ou plus récent),

surtout si vous voulez filtrer ou transformer certaines clés/valeurs en même temps.

ndic = {k: v for d in (dic0, dic1) for k, v in d.items()}
5
répondu ideasman42 2014-01-03 00:49:55
dic0.update(dic1)

Note Ceci ne renvoie pas réellement le dictionnaire combiné, il mute juste dic0 .

4
répondu Daniel Roseman 2011-05-14 22:11:12

veuillez rechercher le site avant de poser des questions la prochaine fois: comment concaténer deux dictionnaires pour en créer un nouveau en Python?

La meilleure façon de le faire est d'utiliser simplement votre code d'exemple, mais en utilisant les éléments() membre de chaque dictionnaire. Ainsi, le code serait:

dic0 = {'dic0': 0}
dic1 = {'dic1': 1}
dic2 = dict(dic0.items() + dic1.items())

j'ai testé ça au ralenti et ça marche très bien. Cependant, la question précédente sur ce sujet indique que cette méthode est lente et mordille mémoire. Il y a plusieurs autres façons recommandées là-bas, donc s'il vous plaît voir que si l'utilisation de la mémoire est importante.

4
répondu LukeFitz 2017-05-23 12:10:38