Python实现字符串转字典时报'dict' object is not callable错误如何解决
报错核心原因
出现'dict' object is not callable的本质是Python内置的dict类型构造器被自定义变量覆盖,失去了可调用的类属性。
正常运行逻辑里,dict是Python的内置类,支持接收键值对格式的可迭代序列,直接生成字典对象。如果在当前脚本的任意位置,存在类似dict = {"name": "test"}的赋值语句,原本指向内置dict类的全局名称,就会被替换成普通的字典实例。后续执行d = dict(l)时,相当于对一个普通字典对象执行调用操作,自然触发报错。
另外你的代码里存在同类的命名隐患:str = 'Vijay=23,...'的写法直接覆盖了Python内置的字符串类型str,虽然本次没有触发报错,但后续如果有需要用到str类型转换的逻辑,会出现同类问题,建议一并调整。
修复操作
- 排查全局作用域下所有和内置名
dict、str重名的自定义变量,将这些变量重命名为不冲突的名称,比如result_dict、kv_content等,释放被占用的内置名称。 - 如果是在交互式调试环境(Python Shell、Jupyter Notebook)中出现的报错,大概率是之前调试时临时赋值覆盖了
dict名称,重启解释器/内核,不执行覆盖内置名的赋值语句,即可快速恢复正常。 - 确认调用
dict(l)时没有多余的语法错误,比如误加括号写成dict() = {}这类反向赋值、或者对已经赋值的dict变量重复加括号执行调用。
修正后可正常运行的示例代码
l = [] kv_content = 'Vijay=23,Ganesh=20,Lakshmi=19,Nikhil=22' for x in kv_content.split(','): y = x.split('=') l.append(y) d = dict(l) for k in d: print('{:1s}---{:1s}'.format(k,d[k]))
代码运行后的输出结果为:
Vijay---23 Ganesh---20 Lakshmi---19 Nikhil---22
内容的提问来源于stack exchange,提问作者Python Learner
相关产品推荐
相关产品推荐

