Menu

Explication des opérateurs d'union de dictionnaire

Accueil / Explication des opérateurs d'union de dictionnaire

Bonjour, bonsoir

Explication des opérateurs d'union de dictionnaire

Posted by GUINARD Maxime le 14/01/22

Nous avons tous ces moments où nous voulons fusionner deux dictionnaires Python en fonction de leurs clés. La manière traditionnelle de le faire était d'utiliser la méthode dict.update(). Cependant, à partir de Python 3.9, le très attendu opérateur Union dict (| et |=) a été introduit.

Quels sont donc ces nouveaux opérateurs de l'Union et comment les utiliser ?

C'est ce dont je vais parler dans cet article.

Fusion de deux dictionnaires à l'aide de dict.update [Old Way]
Supposons que vous souhaitiez fusionner deux dictionnaires d1 et d2. Voici comment vous le feriez en utilisant la méthode dict.
>>> d1 = {"name": "Alice", "age": 25, "job": "Ingénieur logiciel"}
>>>
>>> d1 = {"name": "Alice", "age": 25, "job": "SWE"}
>>> d2 = {"job": "Senior SWE", "location": "US"}
>>> d1.mise à jour(d2)
>>> d1
{'name' : 'Alice', 'age' : 25, 'job' : 'Senior SWE', 'location' : 'US'}


Quelques choses à remarquer :
la méthode de mise à jour n'a pas créé de nouvel objet dictionnaire, elle a juste mis à jour d1 en place les clés du d1 mis à jour est l'union des clés en d1 et d2
pour les clés qui existent à la fois dans d1 et d2, les valeurs de ces clés seront celles de d2. En d'autres termes, d1 est en fait "mis à jour" avec d2
Voyons maintenant comment faire la même chose avec l'opérateur Union (|)
Fusion de deux dictionnaires à l'aide de l'opérateur Union [Python 3.9+] Facile et simple, c'est comme ça que vous le faites.


>>> d1 = {"name": "Alice", "age": 25, "job": "SWE"}
>>> d2 = {"job": "Senior SWE", "location": "US"}
>>> d1 | d2
{'name' : 'Alice', 'age' : 25, 'job' : 'Senior SWE', 'location' : 'US'}

Comme vous pouvez le voir, nous obtenons le même résultat que précédemment. d1 est fusionné avec d2 et les clés qui existent dans les deux dictionnaires sont mises à jour avec les valeurs de l'opérande à droite de l'opérateur d'union.
Il y a cependant une différence entre l'utilisation de l'opérateur union et la méthode de mise à jour.


Comme vous pouvez le voir dans le code ci-dessus, l'opérateur union renvoie en fait un nouveau dictionnaire. Il ne modifie pas d1 ou d2 en place.
>>> d3 = d1 | d2
>>> d1
{'name' : 'Alice', 'age' : 25, 'job' : 'SWE'}
>>> d2
{'job': 'Senior SWE', 'location': 'US'}
>>> d3
{'name' : 'Alice', 'age' : 25, 'job' : 'Senior SWE', 'location' : 'US'}

Et si vous voulez mettre à jour d1 sur place au lieu de créer un nouveau dictionnaire ?


Dans ce cas, vous pouvez toujours utiliser la méthode dict.update, ou mieux encore, l'opérateur d'union d'affectation augmentée (|=)
Fusion de deux dictionnaires à l'aide de l'opérateur Augmented Assignment Union [Python 3.9+] Si vous souhaitez modifier le dictionnaire d1 en place, voici comment procéder à l'aide de l'opérateur union. >>> d1
{'name' : 'Alice', 'age' : 25, 'job' : 'SWE'}
>>> d2
{'job': 'Senior SWE', 'location': 'US'}
>>> d1 |= d2
>>> d1
{'name' : 'Alice', 'age' : 25, 'job' : 'Senior SWE', 'location' : 'US'}

Conclusion
À partir de Python 3.9+, vous pouvez désormais utiliser l'opérateur Union pour fusionner deux dictionnaires ensemble.


Pour fusionner deux dictionnaires en place :
d1 |= d2
Pour fusionner deux dictionnaires et renvoyer le résultat dans un nouvel objet dictionnaire :
d3 = d1 | d2
Bonne Pythonisation ! 🙂

poerateur union de dictionnaire


Discord Development Source
Discord LifeRP
Groupe Steam