当前位置: 首页 > 面试题库 >

字典合并中的字典合并

盖昊东
2023-03-14
问题内容

在python 3.5中,我们可以使用double-splat解包来合并字典

>>> d1 = {1: 'one', 2: 'two'}
>>> d2 = {3: 'three'}
>>> {**d1, **d2}
{1: 'one', 2: 'two', 3: 'three'}

凉。但是,它似乎并未推广到动态用例:

>>> ds = [d1, d2]
>>> {**d for d in ds}
SyntaxError: dict unpacking cannot be used in dict comprehension

相反,我们必须这样做reduce(lambda x,y: {**x, **y}, ds, {}),这看起来很丑陋。当该表达式似乎没有任何歧义时,为什么解析器不允许“一种明显的方法”?


问题答案:

这并不是您所提问题的确切答案,但我认为使用ChainMap它是一种惯用而优雅的方式来完成您的建议(在线合并字典):

>>> from collections import ChainMap
>>> d1 = {1: 'one', 2: 'two'}
>>> d2 = {3: 'three'}
>>> ds = [d1, d2]
>>> dict(ChainMap(*ds))
{1: 'one', 2: 'two', 3: 'three'}

尽管这不是一个特别透明的解决方案,但是由于许多程序员可能并不确切知道其ChainMap工作原理。请注意(如@AnttiHaapala所指出的),“使用了首次发现”,因此,根据您的意图,您可能需要先致电给,reversed然后再将dict传入ChainMap

>>> d2 = {3: 'three', 2:'LOL'}
>>> dict(ChainMap(*ds))
{1: 'one', 2: 'two', 3: 'three'}

>>> dict(ChainMap(*reversed(ds)))
{1: 'one', 2: 'LOL', 3: 'three'}


 类似资料:
  • 本文向大家介绍Python合并字典,包括了Python合并字典的使用技巧和注意事项,需要的朋友参考一下 示例 考虑以下字典: Python 3.5+ 如本示例所示,重复的键映射到它们的最后一个值(例如,“ Clifford”覆盖“ Nemo”)。 Python 3.3以上 使用此技术,给定键的最前值优先,而不是最后一个(“ Clifford”被抛弃,取而代之的是“ Nemo”)。 Python 2

  • 问题内容: 我目前正在使用ansible来安装PHP,并且在合并字典时遇到了一些困难。我尝试了几种方法来做到这一点,但是我无法像我想要的那样使它工作: 有没有办法合并两个字典,所以我可以将其与“ with_dict”一起使用? 问题答案: 在Ansible 2.0中,为此有一个Jinja过滤器:

  • 问题内容: 假设我有一个数据帧字典: 我想将它们全部合并成这样: 我可以手动执行以下操作: 但是,有没有一种方法可以自动浏览字典并合并呢?任何帮助表示赞赏。 问题答案: 您可以直接传递dict并将属性访问到: 假设您只是想连接所有df,如果要合并,则需要解释什么是合并标准

  • 问题内容: 带有字典列表,例如: 将它们组合到以下词典列表中的最佳方法是什么: 还是最好以其他方式存储数据,例如: 谢谢你的帮助。 问题答案: 这是一个可能的解决方案: 产生: 如您所见,我使用字典(“合并”)作为中途点。当然,您可以通过以不同的方式存储数据来跳过步骤,但这还取决于这些变量可能具有的其他用途。 祝一切顺利。

  • 问题内容: 我该如何列出这样的词典列表。 …变成这样的单个字典: 问题答案: 这适用于任何长度的字典: 作为一个理解:

  • 问题内容: 我正在尝试合并三个具有相同键,值列表或单个值的字典。 我需要将值中的所有项目添加到一个列表中。 我尝试了几种方法,但是大多数方法将值放入嵌套列表中。例如 我尝试通过遍历值来更新它: 但结果完全一样。我试图简单地添加列表,但是由于第三个字典只有一个浮点数,所以我做不到。 因此,我尝试首先以1和2的值添加列表,然后附加3的值。添加列表效果很好,但是当我尝试从第三个字典中添加浮点数时,突然整

  • 问题内容: Python中是否有一个可用于深度合并字典的库: 以下: 当我结合时,我希望它看起来像: 问题答案: 我希望我不会重新发明轮子,但是解决方案相当短。而且,超级有趣的代码。 因此,其想法是将源复制到目标,并且每次源中的命令都进行递归。因此,如果在A中给定元素包含字典而在B中包含任何其他类型,则确实存在错误。

  • 本文向大家介绍Python实现合并字典的方法,包括了Python实现合并字典的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python实现合并字典的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Python程序设计有所帮助。