字典递归合并,对于重名不同值使用_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] = valuedef _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