【问题标题】:How to concatenate dicts in Python如何在 Python 中连接字典
【发布时间】:2018-07-12 09:21:45
【问题描述】:

我有以下字典:

one: {
  'param': {
    'a': 1
  }
}

one: {
  'param': {
    'b': 1
  }
}

我想将两者连接起来创建three

one: {
  'param': {
    'a': 1,
    'b': 2
  }
}

这可能吗?

【问题讨论】:

  • 这不是有效的 Python,因此,您要完成的工作是模棱两可的。值得庆幸的是,Python 是一种用于消除歧义的编程语言。使用 Python。
  • @juanpa.arrivillaga 来吧,来自 47 名用户的明显复制粘贴错误。为什么不建议编辑?也许你做到了..
  • 建议的编辑仍然不是有效的 Python。 *从技术上讲,它作为类型注释在 Python 3.6 上是有效的,但几乎可以肯定这不是预期的。

标签: python dictionary


【解决方案1】:

使用集合模块中的ChainMap

from collections import ChainMap
...
d1 = dict(...)
d2 = dict(...)

chainmap1 = ChainMap(d1,d2)

【讨论】:

    【解决方案2】:

    你可以试试这个:

    d1 = {'param': {'a': 1}}
    d2 = {'param': {'b': 1}}
    d1['param'].update(d2['param'])
    

    输出:

    {'param': {'b': 1, 'a': 1}}
    

    或者,对于更通用的解决方案:

    def get_dict(d1, d2):
       return {a: dict(c.items()+d.items()) if all(not isinstance(h, dict) for _, h in c.items()) and all(not isinstance(h, dict) for _, h in d.items()) else get_dict(c, d) for (a, c), (_, d) in zip(d1.items(), d2.items())}
    
     print(get_dict({'param': {'a': 1}}, {'param': {'b': 1}}))
    

    输出:

    {'param': {'a': 1, 'b': 1}}
    

    【讨论】:

    • 不错。 update 是要走的路。我的第一个想法是append.. 但这行不通吗?
    【解决方案3】:

    此解决方案将创建一个保留旧字典的新字典:dict(first_dict.items() + second_dict.items())

    在您的具体情况下:

    three = {'param': dict(one['param'].items() + two['param'].items())}
    

    【讨论】:

      【解决方案4】:

      这是一种方式。你需要 Python 3.5+。

      one = {'param': {'a': 1}}
      two = {'param': {'b': 1}}
      
      three = {'param': {**one['param'], **two['param']}}
      
      # {'param': {'a': 1, 'b': 1}}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-11-30
        • 2010-12-19
        • 1970-01-01
        • 2021-07-20
        • 2020-09-04
        • 1970-01-01
        • 2019-04-04
        相关资源
        最近更新 更多