Maison >développement back-end >Tutoriel Python >Comment mettre à jour les dictionnaires imbriqués en Python sans écraser les clés intermédiaires ?
Lorsque vous travaillez avec des dictionnaires imbriqués, il est souvent nécessaire de mettre à jour des clés spécifiques sans affecter les autres niveaux. Cependant, la méthode de mise à jour standard en Python écrase toutes les clés au même niveau, ce qui rend difficile la réalisation de cet objectif.
Une approche récursive peut résoudre efficacement ce problème. En parcourant les dictionnaires de manière récursive, nous pouvons identifier et mettre à jour les clés aux profondeurs appropriées tout en préservant la structure existante.
Par exemple, la fonction récursive suivante peut être utilisée pour mettre à jour le contenu de update dans le dictionnaire1 sans écraser le niveauA :
def update(d, u): for k, v in u.items(): if isinstance(v, dict): d[k] = update(d.get(k, {}), v) else: d[k] = v return d
Dans cette fonction, nous vérifions si v est un dictionnaire et appelons récursivement update avec les sous-dictionnaires appropriés. Si v n’est pas un dictionnaire, on met simplement à jour la clé correspondante dans d. Cela garantit que les clés intermédiaires ne sont pas écrasées.
Considérez l'exemple suivant :
dictionary1 = { "level1": { "level2": {"levelA": 0, "levelB": 1} } } update = { "level1": { "level2": {"levelB": 10} } } updated_dictionary = update(dictionary1, update) print(updated_dictionary) # Output: # {'level1': {'level2': {'levelA': 0, 'levelB': 10}}}
Comme vous pouvez le voir, le niveauA est conservé dans le dictionnaire mis à jour, malgré la mise à jour contenant une valeur pour le niveauB. Cela démontre l'efficacité de l'approche récursive.
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!