我写了一个函数nextw(fname,enc)
,它以.txt格式的书籍返回一个字典,其中一个单词作为键,相邻的单词作为值。
例如,如果我的书中有三个“去”,那么一个人就会继续这样做。如果我搜索字典[' go']我的输出应该是[' on',' out']重复。不幸的是,它不起作用,或者更确切地说它起作用,但只有最后一个相邻的单词,我的书只返回' on'作为一个字符串,我已经检查过它,实际上是最后一个字的相邻单词' go'。我怎样才能让它按预期工作?这是代码:
def nextw(fname,enc):
with open(fname,encoding=enc) as f:
d = {}
data = f.read()
#removes non-alphabetical characters from the book#
for char in data:
if not char.isalpha():
data = data.replace(char,' ')
#converts the book into lower-case and splits it in a list of words#
data = data.lower()
data = data.split()
#iterates on words#
for index in range(len(data)-1):
searched = data[index]
adjacent = data[index+1]
d[searched] =adjacent
return d
答案 0 :(得分:0)
我认为你的问题在于d[searched] = adjacent
。你需要有类似的东西:
if not searched in d.keys():
d[searched] = list()
d[searched].append(adjacent)