繁体   English   中英

使用计数器功能时的回溯错误

[英]Traceback error when using a counter function

我要执行以下操作:

  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'

您正在计算一个列表列表 中的每个元素aList也是一个列表,里面有一个词:

list = aList.append([word])

您将[word]追加到该列表中,因此列表中只有一个元素。

Counter尝试将每个列表用作键,这是不可能的,因为列表对象是可变的,因此不可哈希。

您不希望对列表进行计数,而是要对单词进行计数,因此仅添加不带周围列表的单词:

aList.append(word)

注意list = part可以并且应该删除。 .append()总是返回None ,因为列表是就地更改的,并且您绝不会在代码的其他任何地方使用list

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM