Python 类型错误:不可损坏的类型:';列表';从脚本调用代码时,但通过在控制台中创建函数运行相同代码时不会出错
我是python新手,在理解某些错误时遇到困难。当我通过调用具有该函数的脚本来运行下面的代码时,我得到一个错误Python 类型错误:不可损坏的类型:';列表';从脚本调用代码时,但通过在控制台中创建函数运行相同代码时不会出错,python,Python,我是python新手,在理解某些错误时遇到困难。当我通过调用具有该函数的脚本来运行下面的代码时,我得到一个错误 TypeError: unhashable type: 'list' 但是当我在控制台中创建一个函数并运行它时,我没有得到任何错误。非常感谢您的帮助。 代码是 在将列表项用作键之前,我已经仔细地将其解析为字符串,因此我不明白为什么会出现错误 完整错误消息: 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 文件“C:\Users\faisal.sayed\Documents\Pr
TypeError: unhashable type: 'list'
但是当我在控制台中创建一个函数并运行它时,我没有得到任何错误。非常感谢您的帮助。
代码是
在将列表项用作键之前,我已经仔细地将其解析为字符串,因此我不明白为什么会出现错误
完整错误消息:
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“C:\Users\faisal.sayed\Documents\ProjectsPython\textAnalytics.py”,第18行,在textBookVerse中
如果dictBook.has_键(book):
TypeError:不可损坏的类型:“列表”
词典没有append方法
您可以通过这样做来添加
dictBook[newKey]=值
或
dictBook.update(键、值)
有关更多信息,请参阅
希望这有帮助 当代码进入第一个if和
dictBook
的else
循环时,代码将在下一行给出异常,不包含st
作为键。
异常:键错误:“st”
dictBook[listBooks[-1]].append(i)
将dictBook定义为
dictBook = {"st":[]}
进口稀土
def BookSent(已发送令牌):
print BookSent(“世界之书”)感谢大家的回复。代码很好。我只是把它放到另一个脚本中,效果很好。我不确定是否存在缓存问题
结束话题 您可以为函数提供测试输入,即sent_令牌的值吗?另外,它通常有助于发布完整的回溯(从
回溯
行开始的错误消息),以便每个人都可以看到错误实际发生的位置。非常感谢。我已经添加了完整的错误消息。append
在dictBook[book]
上被调用,它是字典中的一个值,在此上下文中始终是一个列表
。此外,您所描述的错误将导致与问题中的错误截然不同的异常。非常感谢您的回复。我试着对else进行注释,但错误仍然存在。我添加了完整的回溯错误。你说这段代码对你有用吗?如果我做了与您相同的事情,即在控制台中编写此代码,然后使用标记化语句作为输入运行函数,那么它对我来说就可以了。但是,当我在脚本中编写相同的函数并调用脚本时,我得到了一个错误。我调用函数的方式是从脚本导入BookSent b=BookSent(标记化的句子)
dictBook[listBooks[-1]].append(i)
dictBook = {"st":[]}
dictBook = {}
listBooks = ['st']
for i in sent_token:
if re.search(r'Book of [a-zA-Z]+', i) is not None:
book = re.findall(r'Book of [a-zA-Z]+', i)[0]
book = str(book)
if dictBook.has_key(book):
dictBook[book].append(i)
else:
dictBook[book] = []
dictBook[book].append(i)
listBooks.append(book)
else:
dictBook.setdefault(listBooks[-1], []).append(i)
return dictBook