Home  >  Article  >  Backend Development  >  How to Update Nested Dictionaries of Variable Depth While Preserving Specific Values?

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

DDD
DDDOriginal
2024-11-08 03:31:01337browse

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

Updating Nested Dictionaries of Variable Depth

You encounter a dilemma when attempting to update a nested dictionary (dictionary1) with the contents of another dictionary (update) while preserving specific values in the nested structure. Specifically, you want to update the "level2" key in dictionary1 without overwriting the "levelA" value.

To address this challenge, a recursive solution is proposed. The following Python code implements this approach:

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]

This function recursively traverses both dictionaries and updates values based on the following rules:

  • If both keys exist in both dictionaries and are dictionaries themselves, the function calls itself recursively, merging the nested dictionaries.
  • Otherwise, the value from dict2 is assigned to dict1.

By utilizing this recursive approach, you can modify nested dictionaries of varying depth while preserving specific values.

The above is the detailed content of How to Update Nested Dictionaries of Variable Depth While Preserving Specific Values?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn