如何动态地将值添加到python dict中,然后再添加到JSON文件中?

时间:2020-08-11 07:40:47

标签: python json python-3.x dictionary

我的代码从API中提取特定值,因此我需要将这些值放入现有的JSON文件中

代码:

list = ['xxx','yyy','zzz','rrr','ttt']
    for element in list:
ipam_data = get_data(element)
        for k,v in ipam_data.items():
                if 'networks' in v:
                    for network_info in v['networks']:
                        id_site = network_info['site_id']
                        network_subnet = network_info['network']
                        vlan = network_info['vlan']
                        

我试图将数据放入具有相同键的嵌套dict中,这样在JSON文件中包含多个值:

{
            "id_site": "value",
            "vlan_info": "value",
            "network_subnet": "value",
          },
 {
             "id_site": "value",
            "vlan_info": "value",
            "network_subnet": "value",
           },

我在编码add_data函数时遇到了一些挑战,因为我想通过循环将值添加到字典中。我有一个经典功能,可以为我要修改的经典字典增加值:

def add_data(your_dict, new_data):
 your_dict[new_data['mag_id']['ip_range']['vlan']] = new_data
    return your_dict

我正在尝试动态添加值,而不是将值用硬代码写入JSON,这就是我在努力的地方。欢迎任何帮助。

data = {}
new_entry={'mag_id':id_mag,'ip_range':network_info,'vlan':vlan}
add_data(data,new_entry)
with open('result.json', 'w') as fp:
 json.dump(add_data, fp)

1 个答案:

答案 0 :(得分:1)

实际上,您不需要add_data()函数即可将数据添加到字典中。您可以分段添加元素:

data = {}
new_entry={'mag_id':id_mag,'ip_range':network_info,'vlan':vlan}
for key,value in new_entry.items():
    data[key]=value

如果您绝对希望将其作为函数:

def add_data(your_dict, new_data):
    for key,value in new_data.items():
        your_dict[key]=value
    return your_dict

标记此功能没有错误处理。它将使用相同的键覆盖现有条目。