Python3.8使用zip时报TypeError: 'ZipFile' object is not callable如何解决
错误根因
你写的dict(zip(word_list_s,count_list_s))语法完全正确,出现TypeError: 'ZipFile' object is not callable报错和zip内置函数本身的用法无关,问题出在运行上下文的名称冲突:
- 你在运行这段代码之前,已经把Python内置的
zip名称覆盖了,大概率是之前操作压缩文件时写过类似zip = ZipFile("压缩包路径", "r")、或者from zipfile import ZipFile as zip这类代码 - 此时你调用的
zip已经不是内置的生成器函数,而是ZipFile类的实例对象,对象无法被当做函数调用,因此触发报错
解决方案
- 重启你的Python运行环境(比如Jupyter内核、脚本解释器),重新运行该段代码即可,只要运行过程中没有再覆盖
zip名称就能正常执行 - 不想重启环境可以在这段代码开头加一行
del zip,手动清除之前自定义的zip变量,让解释器重新识别内置的zip函数 - 如果后续还要用到你之前定义的
zip对象,可以把生成字典的代码改为直接调用内置zip的全路径:freq_s = dict(__builtins__.zip(word_list_s,count_list_s))
补充说明
你之前了解到的「zip是生成器、调用dict(zip())可以将两个等长序列转换为键值对字典」的知识点是完全正确的,这段代码本身的业务逻辑没有问题,不需要调整。
内容的提问来源于stack exchange,提问作者xsrg45
相关产品推荐
相关产品推荐

