Python字典含点键使用update()方法失效的原因及解决办法
底层原因
dict.update()方法本身是支持更新键名带特殊字符的字典项的,你遇到的报错是Python关键字参数的语法限制导致的:
- Python语法要求关键字参数的参数名必须是合法标识符,仅能包含字母、数字、下划线,且不能以数字开头,不能包含
.、空格等特殊字符 - 你书写
parDict.update(group1.b=4)时,Python会将group1.b识别为属性访问表达式,而非合法的参数名,因此直接抛出SyntaxError - 而直接通过
parDict['group1.b'] = 4赋值时,键是普通字符串类型,字典天然支持任意不可变类型作为键,所以可以正常运行
解决方案
使用update()方法的字典传参形式即可支持任意合法键的批量更新,写法如下:
# 单条命令批量更新普通键和带点的键 parDict.update({ 'a': 4, 'b': 4, 'group1.b': 4 })
运行后即可正常完成所有键的更新,不需要拆分多条赋值语句。
内容的提问来源于stack exchange,提问作者janpeter
相关产品推荐
相关产品推荐

