【python】字典递归合并

 字典递归合并,对于重名不同值使用_1尾缀进行合并。相同或为空字段自动过滤。

def _rec_merge(dict1: dict, dict2: dict):
    for key, value in dict2.items():
        if not value or not dict1[key]:
            continue
        if key not in dict1.keys():
            dict1[key] = value
        else:
            if isinstance(value, dict):
                _rec_merge(dict1[key], value)
            elif isinstance(value, list):
                dict1[key] = set(dict1[key] + value)
            elif type(value) in [int, str]:
                if dict1[key] != value:
                    dict1[_rename_dict_key(key)] = value
            else:
                dict1[key] = value

def _rename_dict_key(old_name):
    temp = old_name.split("_")
    new_name = old_name
    num = 1
    if temp[-1].isdigit():
        num = int(temp[-1]) + 1
        new_name = "".join(temp[0:-1]) + "_" + str(num)
    else:
        new_name = old_name + "_1"
    return new_name

你可能感兴趣的:(后端开发)