Python 类型错误:不可损坏的类型:';列表';从脚本调用代码时,但通过在控制台中创建函数运行相同代码时不会出错

Python 类型错误:不可损坏的类型:';列表';从脚本调用代码时,但通过在控制台中创建函数运行相同代码时不会出错,python,Python,我是python新手,在理解某些错误时遇到困难。当我通过调用具有该函数的脚本来运行下面的代码时,我得到一个错误 TypeError: unhashable type: 'list' 但是当我在控制台中创建一个函数并运行它时,我没有得到任何错误。非常感谢您的帮助。 代码是 在将列表项用作键之前,我已经仔细地将其解析为字符串,因此我不明白为什么会出现错误 完整错误消息: 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 文件“C:\Users\faisal.sayed\Documents\Pr

我是python新手,在理解某些错误时遇到困难。当我通过调用具有该函数的脚本来运行下面的代码时,我得到一个错误

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和dictBookelse循环时,代码将在下一行给出异常,不包含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