Maison  >  Article  >  développement back-end  >  Comment mettre à jour des dictionnaires imbriqués de profondeur variable tout en préservant des valeurs spécifiques ?

Comment mettre à jour des dictionnaires imbriqués de profondeur variable tout en préservant des valeurs spécifiques ?

DDD
DDDoriginal
2024-11-08 03:31:01337parcourir

How to Update Nested Dictionaries of Variable Depth While Preserving Specific Values?

Mise à jour des dictionnaires imbriqués de profondeur variable

Vous rencontrez un dilemme lorsque vous tentez de mettre à jour un dictionnaire imbriqué (dictionnaire1) avec le contenu d'un autre dictionnaire (mise à jour) tout en préservant les valeurs spécifiques dans la structure imbriquée. Plus précisément, vous souhaitez mettre à jour la clé « level2 » dans le dictionnaire1 sans écraser la valeur « levelA ».

Pour relever ce défi, une solution récursive est proposée. Le code Python suivant implémente cette approche :

def merge_dicts(dict1, dict2):
    for key in dict2:
        if key in dict1 and isinstance(dict1[key], dict) and isinstance(dict2[key], dict):
            merge_dicts(dict1[key], dict2[key])
        else:
            dict1[key] = dict2[key]

Cette fonction parcourt récursivement les deux dictionnaires et met à jour les valeurs en fonction des règles suivantes :

  • Si les deux clés existent dans les deux dictionnaires et sont dictionnaires eux-mêmes, la fonction s'appelle de manière récursive, fusionnant les dictionnaires imbriqués.
  • Sinon, la valeur de dict2 est affectée à dict1.

En utilisant cette approche récursive, vous pouvez modifier les dictionnaires imbriqués. dictionnaires de profondeur variable tout en préservant des valeurs spécifiques.

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