python - 将多个字典合并为一个

标签 python dictionary python-3.7

在 Python 3.7.2 中,我有一个 for 循环的输出:

{'London': {'House': 1800.00}}
{'London': {'Farm': 2500.0}}
{'Rome': {'House': 1500.00}}
{'Rome': {'Farm': 3000.00}}

我想在最后一个循环中得到这个:

{ 'London': 
    { 'House': 1800.00,
      'Farm': 2500.00
    },
  'Rome': 
    { 'House': 1500.00,
      'Farm': 3000.00
    },
}

我尝试了许多解决方案,如 .update() 等,但我没有找到正确的方法。

例如,此解决方案覆盖前几个键值(对于 .update() 方法):

dict(list(self.PRICE_LIST.items()) + list(price_location.items()))

{
    "London": {
        "Farm": 2500.00
    },
    "Rome": {
        "Farm": 3000.00
    },
}

最佳答案

您需要一个循环并一次更新一个嵌套值:

import collections
import pprint

dicts = [
    {'London': {'House': 1800.00}},
    {'London': {'Farm': 2500.0}},
    {'Rome': {'House': 1500.00}},
    {'Rome': {'Farm': 3000.00}},
]

merged = collections.defaultdict(dict)

for d in dicts:
    for key, val in d.items():
        merged[key].update(val)

pprint.pprint(dict(merged))

然后输出是这样的:

{'London': {'Farm': 2500.0, 'House': 1800.0},
 'Rome': {'Farm': 3000.0, 'House': 1500.0}}

关于python - 将多个字典合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54850241/

相关文章:

discord - 删除特定 channel 中的某些文件类型附件?

python - 如何使用opencv python将RGB颜色范围更改为红色

Python 3.7 : Unable to install gmpy2 in a venv in Windows 10

python - 为什么无论程序定义什么(包括平均值),输入的每个成绩都是相同的?

python - 如何解析和简化像 '3cm/µs² + 4e-4 sqmiles/km/h**2' 这样正确处理物理单位的字符串?

python - 使用 python 将 API 响应排序为 excel 或 csv。 Python

Python Tkinter 用 StringVar 调用字典?

c# - 为什么在字典声明中使用接口(interface)?

python - 如何使用 matplotlib 将国家边界作为绘图的背景?

python - 为什么所有通过 pip 的安装都失败