簡體   English   中英

如何在Python中連接字典

[英]How to concatenate dicts in Python

我有以下意見:

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

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

我想將兩者串聯以創建three

one: {
  'param': {
    'a': 1,
    'b': 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}}

使用來自集合模塊的ChainMap

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

chainmap1 = ChainMap(d1,d2)

這是一種方式。 您需要Python 3.5以上版本。

one = {'param': {'a': 1}}
two = {'param': {'b': 1}}

three = {'param': {**one['param'], **two['param']}}

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

此解決方案將創建一個保留舊字典的新字典: dict(first_dict.items() + second_dict.items())

在您的特定情況下:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM