我需要合并多个词典,例如:
dict1 = {1:{"a":{"A"}}, 2:{"b":{"B"}}} dict2 = {2:{"c":{"C"}}, 3:{"d":{"D"}}}
有A B C树叶D,就像{"info1":"value", "info2":"value2"}
A
B
C
D
{"info1":"value", "info2":"value2"}
字典的级别(深度)未知,可能是{2:{"c":{"z":{"y":{C}}}}}
{2:{"c":{"z":{"y":{C}}}}}
在我的例子中,它代表一个目录/文件结构,其中节点是文档,叶子是文件。
我想合并它们以获得:
dict3 = {1:{"a":{"A"}}, 2:{"b":{"B"},"c":{"C"}}, 3:{"d":{"D"}}}
我不确定如何使用 Python 轻松地做到这一点。
要合并多个字典(每个字典代表类似于目录树的层次结构),可以使用函数递归合并它们。以下是使用 Python 解决此问题的方法:
你可以定义一个递归函数来合并字典及其嵌套的
您可以按照以下方式实现此目的:
def merge_dicts(dict1, dict2): merged = dict1.copy() for key, value in dict2.items(): if key in merged: if isinstance(merged[key], dict) and isinstance(value, dict): merged[key] = merge_dicts(merged[key], value) elif isinstance(merged[key], set) and isinstance(value, set): merged[key].update(value) else: # Overwrite leaf nodes (non-dictionaries) merged[key] = value else: # Add new key-value pair merged[key] = value return merged # Example dictionaries dict1 = {1: {"a": {"A"}}, 2: {"b": {"B"}}} dict2 = {2: {"c": {"C"}}, 3: {"d": {"D"}}} # Merge dictionaries dict3 = merge_dicts(dict1, dict2) print(dict3)
merge_dicts 函数:
merge_dicts以两个字典(dict1和dict2)作为输入。
merge_dicts
dict1
dict2
它初始化merged为的副本dict1以避免dict1修改。
merged
它遍历中的每个键值对dict2。
如果键存在于中
,它会检查值的类型:
dict
set
如果 中不存在该键merged,它会将 中的键值对添加dict2到merged。
最后,它返回合并后的字典。
用法示例:
该示例将dict1和合并dict2为dict3。
dict3
dict1``dict2
此方法提供了一种灵活、递归的方式来合并具有嵌套结构的字典,从而使您能够在 Python 中有效地管理分层数据。