def recursive_merge_existing()

in dusty/tools/dict.py [0:0]


def recursive_merge_existing(dict_a, dict_b):
    """ Merge dictionaries recursively (only already existing dicts) """
    result = dict()
    for key in set(list(dict_a.keys()) + list(dict_b.keys())):
        if key not in dict_a:
            if isinstance(dict_b[key], dict):
                continue
            result[key] = dict_b[key]
        elif key not in dict_b:
            result[key] = dict_a[key]
        elif isinstance(dict_a[key], dict) and isinstance(dict_b[key], dict):
            result[key] = recursive_merge_existing(dict_a[key], dict_b[key])
        else:
            if isinstance(dict_a[key], bool) and not isinstance(dict_b[key], bool) and \
                    not dict_a[key]:
                continue
            result[key] = dict_b[key]
    return result