亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

更新“默認字典”中的值而不刪除其鍵

更新“默認字典”中的值而不刪除其鍵

一只甜甜圈 2021-09-11 16:27:38
我有兩個字典,第一個是第二個的默認值,如果它們不存在或未定義,應該回退到什么,它有點像這樣: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'}}}


查看完整回答
反對 回復 2021-09-11
?
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]})

祝你好運


查看完整回答
反對 回復 2021-09-11
  • 2 回答
  • 0 關注
  • 194 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號