我想做以下事情:
因此我有以下内容:
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'
答案 0 :(得分:1)
您正在计算列表。 list = aList.append([word])
中的每个元素本身都是一个列表,其中包含一个单词:
[word]
您正在将Counter
附加到列表中,因此列表中包含一个元素。
aList.append(word)
尝试将每个列表用作键,这是不可能的,因为列表对象是可变的,因此不可清除。
你不想计算列表,你想要计算单词,所以只附加没有周围列表的单词:
list =
请注意.append()
部分可以而且应该被删除。 None
始终返回list
,因为列表已就地更改,并且您永远不会在代码中的任何其他地方使用 PumpCycleTime = millis();
// Loop this until the pumpHIGH duration has expired
do
{
digitalWrite(Pump, HIGH);
SendSerialData();
}
while (millis() - PumpCycleTime < PumpHIGH);
// Record the pump cycle LOW start time
PumpCycleTime = millis();
// Loop this until the pumpLOW duration has expired
do
{
digitalWrite(Pump, LOW);
SendSerialData();
}
while (millis() - PumpCycleTime < 1);
。