有没有提供dict merge的简单python包?

有没有提供dict merge的简单python包?,python,python-2.7,Python,Python 2.7,我想这样做: merge({'a': 1}, {'b': 2}) 并返回{'a':1,'b':2} 我不想使用.update(),遗憾的是,它不会返回更新的或新的dict,只是None(为什么?…) 因为我知道.update(),所以我可以为此编写一个3行函数。我不需要,我只想要一个已经存在/已知的包,以简单的方式完成这类工作 编辑 此编辑只是为了向用户解释这些问题,这样用户就不会重复这些问题,因此选择的答案与候选答案副本中提供的任何答案都不相关。该软件包可以合并词典 从Python 3.5开

我想这样做:

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

  • 我不想使用
    .update()
    ,遗憾的是,它不会返回更新的或新的
    dict
    ,只是
    None
    (为什么?…)
  • 因为我知道
    .update()
    ,所以我可以为此编写一个3行函数。我不需要,我只想要一个已经存在/已知的包,以简单的方式完成这类工作
  • 编辑 此编辑只是为了向用户解释这些问题,这样用户就不会重复这些问题,因此选择的答案与候选答案副本中提供的任何答案都不相关。

    该软件包可以合并词典

    从Python 3.5开始,您可以合并字典,而无需附加程序包:

    >>> d1 = {'a': 1}
    >>> d2 = {'b': 2}
    >>> {**d1, **d2}
    {'b': 2, 'a': 1}
    

    正如ShadowRanger在评论中指出的那样,只有当d2的所有键都是str类型时,这才有效。在Python 2.7中,您可以使用一行(忽略导入)合并:

    from itertools import chain
    
    merged = dict(chain(dict1.viewitems(), dict2.viewitems()))
    
    在Py3.5及更高版本中,您可以使用:


    之所以
    dict.update
    返回
    None
    ,是因为Python方法作为一般规则,坚持要么改变现有对象,要么返回新对象,而不是两者兼而有之。基本上,有副作用的函数不应该以功能性的方式使用(因为它容易混淆)。

    否决,检查原因:只有当
    d2
    有纯
    str
    键时,这才是合法的;否则,滥用关键字参数解包是不合法的。@ShadowRanger是的,对你的评论进行了投票,让人们看到它@亚历克斯的评论是短暂的。如果你真的想突出显示它,请将它添加到你的答案中。可能是重复的而不是重复的。这一个要求提供这样的包,因为它不是Python2的原生版本。应聘者不是在寻找这个方面,也不是在提供这个意义上的答案。@pepper_chico。所以你的问题实际上是,既然你要求人们推荐一个软件库,你想为此引入一个依赖项吗?@user2357112是的!!,这一举动清楚地表明了这种语言有多好。你知道这个软件包是否没有出现如中所述的性能下降问题吗?@pepper_chico:我没有测量它,但它不会产生不必要的副本(实现也相当短):我意识到为什么,“为什么”更像是复述而不是真实的。依我看,这只是为了不让新手感到困惑,以牺牲可用性为代价,因此“…”。
    from itertools import chain
    
    merged = dict(chain(dict1.viewitems(), dict2.viewitems()))
    
    merged = {**dict1, **dict2}