Python 3x:返回相邻单词的字典函数

时间:2018-01-10 17:56:42

标签: python python-3.x dictionary ipython

我写了一个函数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

1 个答案:

答案 0 :(得分:0)

我认为你的问题在于d[searched] = adjacent。你需要有类似的东西:

if not searched in d.keys():
    d[searched] = list()

d[searched].append(adjacent)