[英]Traceback error when using a counter function
我要执行以下操作:
因此,我有以下内容:
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'
您正在计算一个列表列表 。 中的每个元素aList
也是一个列表,里面有一个词:
list = aList.append([word])
您将[word]
追加到该列表中,因此列表中只有一个元素。
Counter
尝试将每个列表用作键,这是不可能的,因为列表对象是可变的,因此不可哈希。
您不希望对列表进行计数,而是要对单词进行计数,因此仅添加不带周围列表的单词:
aList.append(word)
注意list =
part可以并且应该删除。 .append()
总是返回None
,因为列表是就地更改的,并且您绝不会在代码的其他任何地方使用list
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.