在 Python 中,我们经常会遇到需要组合多个嵌套字典的场景。这项任务可能具有挑战性,特别是当字典具有不同程度的深度和潜在冲突时。
为了合并字典的字典并维护层次结构,我们使用递归函数:
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)]) elif a[key] != b[key]: raise Exception('Conflict at ' + '.'.join(path + [str(key)])) else: a[key] = b[key] return a
此函数接受两个字典 a 和 b,以及一个可选的路径参数,用于跟踪合并字典中的当前路径。它迭代 b 中的每个键并执行以下操作:
最后,合并返回字典a。
要合并多个字典,可以使用reduce将所有字典合并为一个字典字典:
from functools import reduce reduce(merge, [dict1, dict2, dict3...])
此操作会将所有字典的内容添加到列表中的第一个字典中。
示例:
dict1 = {1:{'a':{'A'}}, 2:{'b':{'B'}}} dict2 = {2:{'c':{'C'}}, 3:{'d':{'D'}}} print(merge(dict1, dict2)) # Output: # {1:{'a':{'A'}}, 2:{'b':{'B'}, 'c':{'C'}}, 3:{'d':{'D'}}}
请注意,生成的字典存储在 dict1 中。
以上是如何在Python中高效地合并嵌套字典?的详细内容。更多信息请关注PHP中文网其他相关文章!