Maison > développement back-end > Tutoriel Python > Comment puis-je fusionner efficacement les dictionnaires Python et les valeurs de somme pour les clés communes ?

Comment puis-je fusionner efficacement les dictionnaires Python et les valeurs de somme pour les clés communes ?

Patricia Arquette
Libérer: 2024-12-11 16:22:15
original
711 Les gens l'ont consulté

How Can I Efficiently Merge Python Dictionaries and Sum Values for Common Keys?

Fusionner des dictionnaires en Python : ajouter des valeurs pour les clés qui se chevauchent

Lorsque vous travaillez avec plusieurs dictionnaires, il est souvent nécessaire de les combiner de manière significative . Un scénario courant consiste à ajouter les valeurs des clés qui apparaissent dans les deux dictionnaires tout en conservant les clés qui n'existent que dans un seul.

Problème :

Considérez les dictionnaires suivants :

Dict A: {'a': 1, 'b': 2, 'c': 3}
Dict B: {'b': 3, 'c': 4, 'd': 5}
Copier après la connexion

Le but est de fusionner ces dictionnaires de telle sorte que le résultat est :

{'a': 1, 'b': 5, 'c': 7, 'd': 5}
Copier après la connexion

Solution utilisant Collections.Counter :

Un moyen pythonique et efficace d'y parvenir consiste à utiliser la classe collections.Counter. Il s'agit d'une sous-classe de dict qui fournit un moyen pratique d'effectuer un comptage basé sur les éléments, qui se prête bien à la tâche de fusion de dictionnaires.

from collections import Counter

A = Counter({'a':1, 'b':2, 'c':3})
B = Counter({'b':3, 'c':4, 'd':5})
Copier après la connexion

Pour fusionner les dictionnaires, nous ajoutons simplement les objets Counter :

merged_dict = A + B
Copier après la connexion

Le résultat est un nouvel objet Counter, qui ajoute automatiquement des valeurs pour les clés qui se chevauchent :

merged_dict.most_common()
# Output: [('c', 7), ('b', 5), ('d', 5), ('a', 1)]
Copier après la connexion

Conversion le faire dans un dictionnaire ordinaire est trivial :

merged_dict = dict(merged_dict)
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal