Python 中字典的字典的深度合并
使用嵌套键合并多个字典可能是一项具有挑战性的任务。让我们考虑以下示例:
dict1 = { 1: {"a": {"A"}}, 2: {"b": {"B"}} } dict2 = { 2: {"c": {"C"}}, 3: {"d": {"D"}} }
所需的输出是:
dict3 = { 1: {"a": {"A"}}, 2: {"b": {"B"}, "c": {"C"}}, 3: {"d": {"D"}} }
为了实现这种深度合并,我们可以利用递归函数:
def merge(a: dict, b: dict, path=[]): for key in b: if key in a: if isinstance(a[key], dict) and isinstance(b[key], dict): merge(a[key], b[key], path + [str(key)]) else: a[key] = b[key] else: a[key] = b[key] return a
此函数采用两个字典,a 和 b,以及一个跟踪嵌套结构中当前位置的路径。它遍历 b 中的键并检查 a 中是否存在相应的键。如果该键处的值都是字典,则它递归地调用合并函数来合并这些子字典。否则,它会使用 b 中的值更新 a 中的值。
对于上面的示例字典,合并函数将产生所需的结果:
print(merge(dict1, dict2))
输出将为:
{ 1: {'a': {'A'}}, 2: {'b': {'B'}, 'c': {'C'}}, 3: {'d': {'D'}} }
注意:此函数会改变第一个字典 a。如果您想保留其内容,可以在合并之前复制一份,例如 merge(dict(a), b)。
以上是如何在 Python 中执行嵌套字典的深度合并?的详细内容。更多信息请关注PHP中文网其他相关文章!