web-dev-qa-db-fra.com

Ajout de dictionnaires ensemble, Python

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}
85
rectangletangle

Si vous souhaitez créer un nouveau dict sans utiliser de stockage intermédiaire: (c'est plus rapide et, à mon avis, plus propre que d'utiliser dict.items ())

dic2 = dict(dic0, **dic1)

Ou si vous êtes heureux d'utiliser l'un des dict existants:

dic0.update(dic1)
144
bluepnume
>>> dic0 = {'dic0':0}
>>> dic1 = {'dic1':1}
>>> ndic = dict(dic0.items() + dic1.items())
>>> ndic
{'dic0': 0, 'dic1': 1}
>>>
16
Vijay

Vous recherchez le méthode de mise à jour

dic0.update( dic1 )
print( dic0 ) 

donne

{'dic0': 0, 'dic1': 1}
12
Mark

Voici quelques façons d'ajouter des dictionnaires.

Vous pouvez utiliser la fonctionnalité de décompression du dictionnaire de Python3.

ndic = {**dic0, **dic1}

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

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

Si vous êtes d'accord 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 chaînes (dic1 dans ce cas, bien sûr, les arguments peuvent être échangés)

ndic = dict(dic0, **dic1)

Dans certains cas, il peut être utile d’utiliser des interprétations 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()}
10
ideasman42
dic0.update(dic1)

Notez que cela ne renvoie pas réellement le dictionnaire combiné, il mute simplement dic0.

5
Daniel Roseman

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

La méthode la plus simple consiste à utiliser simplement votre exemple de code, mais en utilisant le membre items () de chaque dictionnaire. Donc, le code serait:

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

J'ai testé cela dans IDLE et cela fonctionne bien. Cependant, la question précédente sur ce sujet indique que cette méthode est lente et crache de la mémoire. Il existe plusieurs autres moyens recommandés. Vérifiez donc que l'utilisation de la mémoire est importante.

5
LukeFitz