需要将字典值附加到字典

时间:2018-10-31 13:17:42

标签: python dictionary

我有返回类似内容的函数

{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会帮助我吗?

3 个答案:

答案 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}}}