Maison >développement back-end >Tutoriel Python >Comment puis-je fusionner efficacement des dictionnaires avec des clés en double et collecter leurs valeurs ?

Comment puis-je fusionner efficacement des dictionnaires avec des clés en double et collecter leurs valeurs ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-24 15:29:12716parcourir

How Can I Efficiently Merge Dictionaries with Duplicate Keys and Collect Their Values?

Fusion de dictionnaires pour les clés en double

Lorsque vous travaillez avec plusieurs dictionnaires contenant des clés qui se chevauchent, il devient nécessaire de les fusionner efficacement tout en collectant les valeurs associées à ces clés. Cet article explore une solution pour combiner et collecter des valeurs à partir de clés correspondantes au sein d'une collection de dictionnaires.

Énoncé du problème

Étant donné plusieurs dictionnaires comme :

d1 = {key1: x1, key2: y1}
d2 = {key1: x2, key2: y2}

L'objectif est pour obtenir un résultat fusionné sous la forme d'un nouveau dictionnaire, où chaque clé contient un tuple de valeurs de l'original dictionnaires :

d = {key1: (x1, x2), key2: (y1, y2)}

Solution

La solution utilise collections.defaultdict pour créer un dictionnaire avec des valeurs par défaut sous forme de listes mutables. Cela permet l'accumulation de valeurs pour chaque clé :

from collections import defaultdict

d1 = {1: 2, 3: 4}
d2 = {1: 6, 3: 7}

dd = defaultdict(list)

for d in (d1, d2): # Input dictionaries can be iterated over here
    for key, value in d.items():
        dd[key].append(value)

Le dictionnaire fusionné final dd contient chaque clé mappée à une liste de valeurs des dictionnaires d'entrée.

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!

Déclaration:
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