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
Libérer: 2024-12-24 15:29:12
original
688 Les gens l'ont consulté

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}
Copier après la connexion

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)}
Copier après la connexion

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)
Copier après la connexion

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!

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