Maison > développement back-end > Tutoriel Python > Comment puis-je fusionner en profondeur des dictionnaires imbriqués en Python et gérer les conflits ?

Comment puis-je fusionner en profondeur des dictionnaires imbriqués en Python et gérer les conflits ?

Linda Hamilton
Libérer: 2024-12-04 22:55:14
original
991 Les gens l'ont consulté

How Can I Deep Merge Nested Dictionaries in Python and Handle Conflicts?

Fusion approfondie de dictionnaires de dictionnaires en Python

Lorsque vous travaillez avec des structures de données complexes, il devient souvent nécessaire de fusionner plusieurs dictionnaires pour créer un ensemble unifié. représentation. Un défi particulier se pose lorsque les dictionnaires contiennent des structures imbriquées de dictionnaires, appelées « fusion profonde ».

Pour relever ce défi, nous pouvons tirer parti d'une approche récursive en Python. La fonction suivante fusionne efficacement les dictionnaires tout en gérant les conflits avec élégance :

def merge(a: dict, b: dict, path=[]):
    for key in b:
        if key in a:
            if isinstance(a[key], dict) and isinstance(b[key], dict):
                merge(a[key], b[key], path + [str(key)])
            elif a[key] != b[key]:
                raise Exception('Conflict at ' + '.'.join(path + [str(key)]))
        else:
            a[key] = b[key]
    return a
Copier après la connexion

En cas de valeurs conflictuelles, la fonction déclenchera une exception.

Pour illustrer l'utilisation, considérons l'exemple suivant :

dict1 = {1:{'a':{'A'}}, 2:{'b':{'B'}}}
dict2 = {2:{'c':{'C'}}, 3:{'d':{'D'}}}
Copier après la connexion

En utilisant merge(dict1, dict2), nous pouvons obtenir le résultat souhaité résultat :

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

Cette approche garantit que l'imbrication dans les dictionnaires est gérée efficacement, permettant la fusion en profondeur de structures de données complexes.

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