我有两个字典,第一个是第二个的默认值,如果它们不存在或未定义,应该回退到什么,它有点像这样:default_dict = { 'lorem': { 'foo': 'white', 'bar': 'black', }, 'ipsum': { 'xyz': '', 'abc': {}, 'qwe': {} }}第二个看起来像这样:custom_dict = { 'lorem': { 'bar': 'blue', }, 'ipsum': { 'xyz': 'apple', 'qwe': { 'one': 'strawberry' } }}有什么办法可以从default_dict用 中的值“更新” custom_dict?所需的结果如下所示:custom_dict = { 'lorem': { 'foo': 'white', 'bar': 'blue', }, 'ipsum': { 'xyz': 'apple', 'abc': {}, 'qwe': { 'one': 'strawberry' } }}我试过做default_dict.update(custom_dict)然后custom_dict = default_dict,但你可以想象我只是custom_dict恢复原状......所以default_dict当它更新时,键会被删除。
2 回答
慕码人8056858
TA贡献1803条经验 获得超6个赞
用:
d={a:b for k,v in custom_dict.items() for a,b in v.items()}
print({k:{a:d.get(a,b) for a,b in v.items()} for k,v in default_dict.items()})
字典理解 + 嵌套字典理解会起作用。
输出:
{'lorem': {'foo': 'white', 'bar': 'blue'}, 'ipsum': {'xyz': 'apple', 'abc': {}, 'qwe': {'one': 'strawberry'}}}
UYOU
TA贡献1878条经验 获得超4个赞
如果你的字典结构总是像上面那样,那么下面的代码可以正常工作:
for item in default_dict:
for value in default_dict[item].keys():
if value not in custom_dict[item].keys():
custom_dict[item].update({value: default_dict[item][value]})
祝你好运
添加回答
举报
0/150
提交
取消