Combinez plusieurs dictionnaires et ajoutez plusieurs éléments à la fois, en toute sécurité et de manière non destructive en Python

Chose que tu veux faire

--Je veux combiner plusieurs dictionnaires dans un seul dictionnaire ――Je veux aussi ajouter d'autres éléments

dictA = {'A1': 1, 'A2': 1}
dictB = {'B1': 1, 'B2': 1}
# ---(Combiner des dictionnaires&Ajouter un élément)---
# => {'key1': 1, 'key2': 1, 'A1': 1, 'A2': 1, 'B1': 1, 'B2': 1}

plus loin,

--Je veux le traiter de manière non destructive (sans apporter de modifications au dictionnaire d'origine)

Je voudrais présenter une méthode d'écriture efficace pour les réaliser.

Mauvaise écriture

Ceci est en partie possible avec `` .update () '' et une notation de dictionnaire supplémentaire.

dictA.update(dictB)
dictA['key1'] = 1
dictA['key2'] = 1
new_dict = dictA 
print(new_dict)
# => {'A1': 1, 'A2': 1, 'B1': 1, 'B2': 1, 'key1': 1, 'key2': 1}

Démérite

Le dictA original est parti. (Parce que nous avons ajouté des éléments (changements destructifs) à dictA)

print(dictA)
# => {'A1': 1, 'A2': 1, 'B1': 1, 'B2': 1, 'key1': 1, 'key2': 1}

En outre, si la clé est dupliquée, la valeur sera écrasée. Cela peut provoquer un comportement involontaire (provoquant des bogues).

dictA = {'key': 'dictA'}
dictB = {'key': 'dictB'}
dictA.update(dictB)
print(dictA)
# => {'key': 'dictB'}

Une écriture correcte

Créez un nouveau dictionnaire en passant des valeurs aux arguments de mot-clé de la fonction dict sans vous soucier de la jonction ou de l'ajout d'éléments. N'importe quel nombre est possible.

new_dict = dict(
    key1=1,
    key2=1,
    **dictA,
    **dictB,
)
print(new_dict)
# => {'key1': 1, 'key2': 1, 'A1': 1, 'A2': 1, 'B1': 1, 'B2': 1}

Non destructif

Le dictionnaire d'origine est inchangé car il s'agit d'un processus non destructif.

new_dict['keyA1'] = 5

print(new_dict['keyA1'])
# => 5
print(dictA['keyA1'])
# => 1

Comportement en cas de duplication

S'il y a des doublons, une TypeError se produira, de sorte que vous pouvez éviter d'écraser les valeurs involontaires. Une erreur se produira pour les clés en double dans le dictionnaire et tous les arguments de mots clés écrits explicitement.

dictA = {'key': 'dictA'}
dictB = {'key': 'dictB'}

new_dict = dict(
    key='A',
    **dictA,
    **dictB,
)
# => TypeError: type object got multiple values for keyword argument 'key'

Résumé

Il a été dit que si vous le recréez avec la fonction dict, vous pouvez combiner des dictionnaires et ajouter des éléments de manière sûre et concise!

Recommended Posts

Combinez plusieurs dictionnaires et ajoutez plusieurs éléments à la fois, en toute sécurité et de manière non destructive en Python
Supprimer plusieurs éléments dans la liste python
Utilisez gitlabApi pour ajouter en bloc des membres à plusieurs groupes dans gitlab
[Python] Combine tous les éléments dans un tableau
Convertissez plusieurs fichiers proto à la fois avec python
Enregistrer plusieurs styles personnalisés dans Word à la fois
[Python] Manipulation des éléments dans la liste (tableau) [Ajouter / Supprimer]
Comment échanger des éléments dans un tableau en Python et comment inverser un tableau.
En Python, les éléments de la liste sont triés et sortis sous forme d'éléments et de multiples.
Expression de régression multiple en Python
Pile et file d'attente en Python
Évitez les boucles multiples en Python
Unittest et CI en Python
Obtenir des éléments de liste en Python
Python> liste> append () et extend ()> append: Ajouter une liste | extend: Ajouter un élément de liste | Ajouter une liste avec + =
Passez les éléments sélectionnés dans Tablacus Explorer de JScript à python et renommez-les tous à la fois