使用计数器函数时出现回溯错误

2024-04-24 08:28:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我想做以下工作:

  1. 读入文本文件。你知道吗
  2. 逐行检查单词是否与标记列表中的单词匹配。你知道吗
  3. 创建列表的频率计数

因此,我有以下几点:

tagList = {"later", "test"}
aList = [];
tagCount = {}
from collections import Counter

#Sample
f = ["This is a test", "Call me later"]
for line in f:
    fields = line.split(' ')
    for word in fields:
        if word in tagList:
            list = aList.append([word])

counts = Counter(aList)

一切正常,直到最后一部分。当我这样做时,我抛出以下错误。你觉得这里出了什么问题吗?你知道吗

Traceback (most recent call last):
  File "C:/Users/Marc/PycharmProjects/clustering/load.py", line 51, in <module>
   counts = Counter(aList)
  File "C:\Users\Marc\Anaconda3\lib\collections\__init__.py", line 530, in __init__
   self.update(*args, **kwds)
  File "C:\Users\Marc\Anaconda3\lib\collections\__init__.py", line 617, in update
    _count_elements(self, iterable)
TypeError: unhashable type: 'list'

Tags: inpy列表initlinecountermarc单词
1条回答
网友
1楼 · 发布于 2024-04-24 08:28:53

你在数一个列表aList中的每个元素本身就是一个列表,其中包含一个单词:

list = aList.append([word])

您将[word]附加到那里的列表中,因此列表只有一个元素。你知道吗

Counter尝试将每个列表用作键,这是不可能的,因为列表对象是可变的,因此不可散列。你知道吗

您不想计算列表,而是要计算单词,因此只附加单词而不包含周围的列表:

aList.append(word)

注意list =部分可以也应该删除。.append()总是返回None,因为列表被适当地更改了,并且您永远不会在代码中的任何其他地方使用list。你知道吗

相关问题 更多 >