我有返回类似内容的函数
{a:{b:{c:4}}}
当我再次在循环中调用该函数时,它将返回
{a:{b:{d:5}}}
再次返回
{a:{b:{e:6}}}
所以我希望最终输出为{a:{b:{c:4, d:5, e:6}}}
我尝试了
final_output.update(func)
但这将作为final_output更新为{a:{b:{e:6}}}
def create_dict(self, make_dict, key, value):
final_dict = make_dict
keys = key.split('.')
latest = keys.pop()
for key in keys:
final_dict = final_dict.setdefault(key, {})
final_dict.setdefault(latest, value)
self.create_dict(status_dict, '{}.{}.{}'.format(name, ton_set.id, ton_id),
status)
这是我的函数func
= create_dict
。
在这种情况下,defaultdict
会帮助我吗?
答案 0 :(得分:0)
您可以编写类似以下的函数:
def update_dict(my_dict, value, key):
my_dict[key] = value
return my_dict
my_dict = {}
my_dict = update_dict(my_dict, 4, 'key')
print(my_dict)
答案 1 :(得分:0)
d1={'a': {'b': {'c': 4}}}
d2={'a': {'b': {'d': 5}}}
d3={'a': {'b': {'e': 6}}}
d3['a']['b'].update(dict(d1['a']['b'].items() + d2['a']['b'].items()))
print d3 {'a': {'b': {'c': 4, 'e': 6, 'd': 5}}}
答案 2 :(得分:0)
def update_only_new(original_dict, to_add):
for key in to_add.iterkeys():
if key not in original_dict:
original_dict[key] = to_add[key]
else:
update_only_new(original_dict[key], to_add[key])
> dct={}
> d1 = {'a': {'b': {'c': 4}}}
> d2 = {'a': {'b': {'d': 5}}}
> d3 = {'a': {'b': {'e': 6}}}
> update_only_new(dct,d1)
> print dct
{'a': {'b': {'c': 4}}}
> update_only_new(dct,d2)
> print dct
{'a': {'b': {'c': 4, 'd': 5}}}
> update_only_new(dct,d3)
> print dct
{'a': {'b': {'c': 4, 'e': 6,'d': 5}}}