如何在不删除原有内容的情况下更新嵌套字典
如何在保留原有内容的前提下更新嵌套字典
嘿,这个问题我之前也碰到过!你现在的问题在于,你调用的是外层databody_item的update()方法,这会直接把interests这个键对应的整个值替换成新的字典,而不是去更新嵌套在里面的那个字典。要实现保留原有内容的嵌套字典更新,有几种简单的方法:
直接调用嵌套字典的update方法(最直观的方式)
直接定位到内层的interests字典,调用它自己的update()方法,这样就只会更新内层字典的内容,不会替换整个键值对:databody_item = {'name': 'Kermit', 'interests': {'test1': True}} databody_item['interests'].update({'test2': True}) # 结果:{'name': 'Kermit', 'interests': {'test1': True, 'test2': True}}使用字典解包(Python 3.5+)
如果你希望生成一个新的内层字典而不是修改原有的,可以用字典解包语法合并原有内容和新内容,再赋值回去:databody_item['interests'] = {**databody_item['interests'], 'test2': True}这种方式会创建一个包含原有键值对和新键值对的新字典,如果新字典里有和原有重复的键,新值会覆盖旧值。
使用合并运算符(Python 3.9+)
Python 3.9及以上版本支持|和|=运算符来合并字典,用法更简洁:# 方式1:生成新字典并赋值 databody_item['interests'] = databody_item['interests'] | {'test2': True} # 方式2:直接在原字典上合并 databody_item['interests'] |= {'test2': True}这两种方式的效果和字典解包类似,
|=会直接修改原内层字典,而|会返回新的字典。
内容的提问来源于stack exchange,提问作者unknown6708
相关产品推荐
相关产品推荐

