更新“默认字典”中的值而不删除其键

我有两个字典,第一个是第二个的默认值,如果它们不存在或未定义,应该回退到什么,它有点像这样:


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当它更新时,键会被删除。


一只甜甜圈
浏览 171回答 2
2回答

慕码人8056858

用: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

如果你的字典结构总是像上面那样,那么下面的代码可以正常工作: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]})祝你好运
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python