En Python, nous rencontrons souvent des scénarios dans lesquels nous devons combiner plusieurs dictionnaires imbriqués. Cette tâche peut être difficile, surtout lorsque les dictionnaires ont des niveaux de profondeur variables et des conflits potentiels.
Pour fusionner des dictionnaires de dictionnaires et maintenir la hiérarchie, nous utilisons une fonction récursive :
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
Cette fonction accepte deux dictionnaires, a et b, ainsi qu'un paramètre de chemin facultatif pour suivre le chemin actuel dans le dictionnaire fusionné. Il parcourt chaque clé de b et effectue les actions suivantes :
Enfin, le fusionné le dictionnaire a est renvoyé.
Pour fusionner plusieurs dictionnaires, vous pouvez utiliser réduire pour combiner tous les dictionnaires en un seul dictionnaire :
from functools import reduce reduce(merge, [dict1, dict2, dict3...])
Ceci L'opération ajoutera le contenu de tous les dictionnaires au premier dictionnaire de la liste.
Exemple :
dict1 = {1:{'a':{'A'}}, 2:{'b':{'B'}}} dict2 = {2:{'c':{'C'}}, 3:{'d':{'D'}}} print(merge(dict1, dict2)) # Output: # {1:{'a':{'A'}}, 2:{'b':{'B'}, 'c':{'C'}}, 3:{'d':{'D'}}}
Notez que le dictionnaire résultant est stocké dans dict1.
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!