【发布时间】:2015-07-03 00:50:08
【问题描述】:
我有两个嵌套字典,我想将它们合并为一个(第二个字典覆盖第一个字典值)。我看到了很多合并“平面”(非嵌套)字典的漂亮解决方案,例如:
dict_result = dict1.copy()
dict_result.update(dict2)
或
dict_result = dict(dict1.items() + dict2.items())
或(我最喜欢的)
dict_result = dict(d1,**d2)
但找不到合并多嵌套字典的最有效方法。
我试图避免递归。你的提议是什么?
【问题讨论】:
-
“我试图避免递归。”祝你好运!
-
我希望 Python 为这种情况提供了一些内置方法,但从未见过任何对我的目的有益的方法。
-
您可以将任何递归解决方案转换为迭代解决方案,只需使用带有显式堆栈的循环......
-
顺便说一句,你最喜欢的确实是三个中最差的,因为如果 d2 的任何键不是字符串,它就会失败。虽然第二个也不是很好,因为它构建了三个不必要的列表;
dict(itertools.chain(dict1.iteritems(), dict2.iteritems()))避免了这种情况。当然,在 90% 的情况下,您甚至不需要新的 dict,ChainMap会更简单、更高效……但无论如何,这对于您的问题来说都是题外话。
标签: python python-2.7 dictionary merge