更新字典中的某些键

时间:2021-01-20 11:16:32

标签: python loops dictionary

我不太清楚怎么解释,我有两本字典,我知道怎么把它们放在一起,举个例子:

dict1 = {'machine': {'ip': '123', 'name': 'example', 'disks': {} }, 'machine2': {'ip': '1234', 'name': 'example2', 'disks': {} }}

dict2 = {'machine': {'disk1': {'name': 'exampledisk', 'capacity': '123'}}}

为了把两个字典放在一起,我用这个:

        for key, value in dict1.items():

            try:
                value.update(dict2[key])
            except KeyError:
                continue

但结果是这样的:

{'machine': {'ip': '123', 'name': 'example', 'disks': {}, 'disk1'{'name': 'exampledisk', 'capacity': '123'} }}

我想将这些磁盘的数据放在“磁盘”键中,以接收如下内容:

dict = {'machine': {'ip': '123', 'name': 'example', 'disks': {'disk1':{'name': 'exampledisk', 'capacity': '123'}, 'disk2': .... etc} }}

1 个答案:

答案 0 :(得分:1)

您需要更新值中嵌套的 disks 字典:

for key, value in dict1.items():
    try:
        value['disks'].update(dict2[key])
    except KeyError:
        continue

显然,这是一个非常具体的更新,假设 dict2 中的所有条目都是磁盘。更通用的更新方式需要知道 dict2 中的哪些键与 dict1 中的嵌套字典相对应。