Python 字典:检查字典中是否存在嵌套键列表并更新值
Python Dictionary : Check if a list of nested keys exists in a dictionary and update value
我有一本字典,大概如下
{
"level1": {
"level2": {
"level3": "some value"
}
}
}
字典中的键将是动态的。但是,会有一个需要检查的密钥列表。
例如:['level1', 'level2', 'level3']
我需要检查字典中是否存在路径,例如 level1->level2->level3,如果存在则更新 level3 的值。
你可以这样做
def check_or_update(dct: dict, key_list: list, value) -> bool:
d = dct
for key in key_list[:-1]:
if key in d:
d = d[key]
else:
return False
if key_list[-1] not in d:
return False
d[key_list[-1]] = value
return True
def get(d, keys):
return reduce(lambda d1, key: d1.get(key, {}), keys, d)
# check if key exists
print(not bool(get(the_dict, ['level1', 'level2', 'level3'])))
我有一本字典,大概如下
{
"level1": {
"level2": {
"level3": "some value"
}
}
}
字典中的键将是动态的。但是,会有一个需要检查的密钥列表。
例如:['level1', 'level2', 'level3']
我需要检查字典中是否存在路径,例如 level1->level2->level3,如果存在则更新 level3 的值。
你可以这样做
def check_or_update(dct: dict, key_list: list, value) -> bool:
d = dct
for key in key_list[:-1]:
if key in d:
d = d[key]
else:
return False
if key_list[-1] not in d:
return False
d[key_list[-1]] = value
return True
def get(d, keys):
return reduce(lambda d1, key: d1.get(key, {}), keys, d)
# check if key exists
print(not bool(get(the_dict, ['level1', 'level2', 'level3'])))