任何提供dict合并的简单python包?

时间:2016-03-01 23:19:19

标签: python python-2.7

我想做这样的事情:

merge({'a': 1}, {'b': 2})

并获得{'a': 1, 'b':2}的返回。

  1. 我不想使用.update(),遗憾的是,它不会返回更新的dict,只是None(为什么?.....)。< / LI>
  2. 由于我知道.update(),我可以为此写一个3行函数。我没有,我只想要一个已经存在/已知的包,以简单的方式完成这种工作。
  3. 修改

    此编辑只是为了向可爱的SO用户解释这不是How to merge two Python dictionaries in a single expression?的副本,因此所选答案与候选副本中提供的任何答案无关。

3 个答案:

答案 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类型时,这才有效。