Maison >développement back-end >Tutoriel Python >Comment puis-je fusionner efficacement plusieurs dictionnaires avec des clés potentiellement manquantes ?

Comment puis-je fusionner efficacement plusieurs dictionnaires avec des clés potentiellement manquantes ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-16 19:56:11145parcourir

How Can I Efficiently Merge Multiple Dictionaries with Potentially Missing Keys?

Agréger efficacement les données de plusieurs dictionnaires

Lorsque vous travaillez avec plusieurs dictionnaires, il peut être nécessaire de fusionner leurs données, en collectant des valeurs pour les clés correspondantes dans un nouveau dictionnaire. Cette tâche pose un défi lorsque les dictionnaires peuvent contenir des clés qui manquent dans d'autres.

Pour relever ce défi efficacement, nous pouvons utiliser le defaultdict du module collections. Voici comment cela fonctionne :

from collections import defaultdict

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

dd = defaultdict(list)

for d in (d1, d2): # Include all dictionaries here
    for key, value in d.items():
        dd[key].append(value)

Ce code parcourt chaque dictionnaire, ajoutant chaque paire clé-valeur au defaultdict. Le defaultdict initialise automatiquement les clés manquantes avec une liste vide. Ainsi, lorsqu'une clé est rencontrée dans un dictionnaire mais pas dans les précédents, une nouvelle liste est créée pour ses valeurs.

Le résultat final obtenu en dd est un defaultdict où chaque clé correspond à une liste de valeurs collectées à partir de tous les dictionnaires d'entrée.

print(dd) # Result: defaultdict(<type 'list'>, {1: [2, 6], 3: [4, 7]})

Cette solution garantit une agrégation efficace et complète des données de plusieurs dictionnaires, en traitant même les cas avec des clés manquantes.

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