我需要在从列表中读取密钥后更新字典中的值。 e.g。
d1 = {"太阳" {"周一":" 111"}"周二" {"星期三":& #34; 222"}"周四" {"周五" {"饱和":" 333"}}} 和l1 = [" thu"," fri"," sat"]。
我需要将d1["thu"]["fri"]["sat"]
的值更改为444
。
请告诉我如何编写一个以d1
,l1
和新值作为参数并返回更新字典的函数。
答案 0 :(得分:1)
或者您可以创建一个新的dict并使用它来更新原始的
def create_update_dict(keys, val):
if len(keys) == 1:
return {keys[0]: val}
else:
return {keys[0]: create_update_dict(keys[1:], val)}
def update_dict_val(d, val, keys):
update_dict = create_update_dict(keys, val)
d.update(update_dict)
return d
答案 1 :(得分:0)
您可以获取最后一个dict(您想要更新)并更新其值。使用reduce函数非常简单
from functools import reduce
def update_dict(nested_dict, key, value):
last_dict = reduce(lambda d, k: d[k], key[:-1], nested_dict)
last_dict[key[-1]] = value
输出继电器:
>>> d = {'a': {'b': 1, 'c': 2}}
>>> update_dict(d, ['a', 'b'], 2)
>>> d
{'a': {'b': 2, 'c': 2}}