Python如何实现字典不存在则创建、存在则直接更新?
解决方案
方法1:全局命名空间兜底(最简洁)
直接借助globals()获取当前全局环境的变量,不存在就用空字典兜底,再和函数返回的字典合并:
my_dict = globals().get('my_dict', {}) | function_return_dict(arg1, arg2)
原理:globals().get('my_dict', {})会先查找全局变量里的my_dict,找不到就返回空字典,再用|运算符合并两个字典,最后赋值回my_dict——不管之前有没有这个变量,都能完成创建或更新。
方法2:先初始化再用|=更新
如果偏好|=的写法,可以先判断变量是否存在,不存在就初始化,再执行更新:
if 'my_dict' not in globals(): my_dict = {} my_dict |= function_return_dict(arg1, arg2)
想压缩成一行的话,也可以这么写:
my_dict = {} if 'my_dict' not in globals() else my_dict; my_dict |= function_return_dict(arg1, arg2)
方法3:海象运算符一步到位(Python 3.8+)
如果你的Python版本在3.8及以上,还能用海象运算符一次性完成检查、初始化和更新:
(my_dict := globals().get('my_dict', {})) |= function_return_dict(arg1, arg2)
这行代码会先把my_dict赋值为已存在的变量或空字典,紧接着执行|=更新,一步搞定。
内容的提问来源于stack exchange,提问作者jtlz2
相关产品推荐
相关产品推荐

