字典中的Python增量值
我试图计算文本文件中的每个单词,并将其作为键值对添加到字典中。它向我抛出了一个错误:如果关键字不在wordDict中: TypeError:不可损坏的类型:“列表” 另外,我想知道.split()是否好,因为我的文本文件包含不同的标点符号字典中的Python增量值,python,dictionary,Python,Dictionary,我试图计算文本文件中的每个单词,并将其作为键值对添加到字典中。它向我抛出了一个错误:如果关键字不在wordDict中: TypeError:不可损坏的类型:“列表” 另外,我想知道.split()是否好,因为我的文本文件包含不同的标点符号 fileref = open(mypath + '/' + i, 'r') wordDict = {} for line in fileref.readlines(): key = line.split() if key not in word
fileref = open(mypath + '/' + i, 'r')
wordDict = {}
for line in fileref.readlines():
key = line.split()
if key not in wordDict:
wordDict[key] = 1
else:
wordDict[key] += 1
输出:
key
是一个列表,您试图查看列表是否在字典中,这相当于查看它是否是其中一个键。无法列出字典键,因此出现“Unhabable type”错误。键是当前行中以空格分隔的单词列表。您还需要迭代该列表
for line in fileref:
keys = line.split()
for key in keys:
if key not in wordDict:
wordDict[key] = 1
else:
wordDict[key] += 1
这可以通过使用setdefault
方法或collections
模块中的defaultdict
进行大量清理;这两种方法都允许您通过自动添加初始值来避免显式检查密钥(如果该密钥不在dict
中)
for key in keys:
wordDict.setdefault(key, 0) += 1
或
返回单词列表
>>> "hello world".split()
['hello', 'world']
>>>
和列表或任何其他可变对象不能用作字典的键,因此会出现错误TypeError:unhabable type:'list'
您需要对其进行迭代以包括其中的每一个,而且建议使用的方法是
以上内容可以通过使用和调用来缩短
from collections import Counter
with open(mypath + '/' + i, 'r') as fileref:
wordDict = Counter( word for line in fileref for word in line.split() )
如果你想使用一个额外的分隔符,你可以在你分割之前使用line.replace(other,”)
。这个例子可以更好地使用多行的例子,str.splitlines()可以用来:
from collections import defaultdict
wordDict = defaultdict(int) # Default to 0, since int() == 0
...
for key in keys:
wordDict[key] += 1
>>> "hello world".split()
['hello', 'world']
>>>
wordDict = {}
with open(mypath + '/' + i, 'r') as fileref:
for line in fileref:
for word in line.split():
if word not in wordDict:
wordDict[word] = 1
else:
wordDict[word] += 1
from collections import Counter
with open(mypath + '/' + i, 'r') as fileref:
wordDict = Counter( word for line in fileref for word in line.split() )