我在试着做wordcount程序。
但是,我被它卡住了。请检查一下是什么故障,我也标错了线。在
def print_words(filename):
f=open(filename,'rU')
text=f.read()
count={}
for var in text:
var=var.lower()
var=var.split()
if not var in count: // Error Line
count[var]=1
else:
count[var]=count[var]+1
return count
谢谢
Tags:
将var转换为list:
var=var.split()
。所以您可以使用in
进行检查。相反,您应该使用for
。在同样,最好使用
defaultdict
来完成这项工作。在List是一个不能散列的可变类型。参考hashable,我从中引用了相关部分
非哈希类型不能用作字典键,但在您的情况下,str.split()生成一个列表,您正试图将其用作键。一个简单的解决方案是将其转换为不可变的序列,比如元组
由于在很多情况下,您已经按原样使用了var,因此建议在将其用作字典的键之前,将其包装为内置的元组以将其转换为元组
^{pr2}$因为
var
是一个列表,而您正试图将其用作字典中的键。在列表是不可更改的,因为它们是可变的。在
将
var
转换为元组(tuple(var)
)或重新考虑代码。在相关问题 更多 >
编程相关推荐