如何仅更新字典中的一个键?

时间:2019-08-28 20:50:11

标签: python dictionary

我有

dict = {
 a: { 
  a1: 1 
 }, 
 b : { b1: 2, b2: { b11: 33 } }, 
 c : 12 
}
keys_array = ['b', 'b2', 'b11] 
val = 100

函数应仅更新dict中的一个值并返回, 不仅仅是得到它,我需要更新价值

{a: {a1: 1}, b :{b1: 2, b2: {b11: 100 }}, c : 12}

但是我的功能不是我想要的那么聪明

def update(dict, keys_array, val):
    if len(keys_array) == 1:
        dict[keys_array[0]] = val
    if len(keys_array) == 2:
        dict[keys_array[0]][keys_array[1]] = val
    if len(keys_array) == 3:
        dict[keys_array[0]][keys_array[1]][keys_array[2]] = val
    ...

解决方案

def update(d, val, *keys):
    if len(keys) >= 1:
        if keys[0] not in d:
            d[keys[0]] = {}
        if len(keys) >= 2:
            d[keys[0]] = update(d[keys[0]], val, *keys[1:])
        elif len(keys) == 1:
            d[keys[0]] = val

    return d```

0 个答案:

没有答案