我有兩個字典,第一個是第二個的默認值,如果它們不存在或未定義,應該回退到什么,它有點像這樣: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
提交
取消