我想做这样的事情:
merge({'a': 1}, {'b': 2})
并获得{'a': 1, 'b':2}
的返回。
.update()
,遗憾的是,它不会返回更新的dict
,只是None
(为什么?.....)。< / LI>
.update()
,我可以为此写一个3行函数。我没有,我只想要一个已经存在/已知的包,以简单的方式完成这种工作。此编辑只是为了向可爱的SO用户解释这不是How to merge two Python dictionaries in a single expression?的副本,因此所选答案与候选副本中提供的任何答案无关。
答案 0 :(得分:2)
包dictmerge
可以合并字典。
从Python 3.5开始,您可以合并字典而无需额外的包:
>>> d1 = {'a': 1}
>>> d2 = {'b': 2}
>>> {**d1, **d2}
{'b': 2, 'a': 1}
答案 1 :(得分:2)
在Python 2.7中,您可以使用:
单行(忽略导入)合并from itertools import chain
merged = dict(chain(dict1.viewitems(), dict2.viewitems()))
在Py3.5及更高版本中,您可以使用additional unpacking generalizations to do this without any functions at all:
merged = {**dict1, **dict2}
dict.update
返回None
的原因是因为Python方法作为一般规则,坚持 改变现有对象或返回新对象,而不是两者。基本上,具有副作用的功能不应该以功能性的方式使用(因为它容易混淆)。
答案 2 :(得分:0)
d1 = {'a': 1}
d2 = {'b': 2}
d3 = dict(d1, **d2)
正如ShadowRanger在评论中指出的那样,只有当d2的所有键都是str类型时,这才有效。