Python 创建多维字典以计算单词出现次数

Python 创建多维字典以计算单词出现次数,python,dictionary,multidimensional-array,counter,Python,Dictionary,Multidimensional Array,Counter,我有一个由单词组成的source.txt文件。每一个单词都在一行中 apple tree bee go apple see 我还有一个taget_words.txt文件,每个单词都在一行中 apple bee house garden eat 现在我必须在源文件中搜索每个目标词。如果找到目标词,例如apple,则应为目标词以及前3个和后3个单词中的每一个创建词典条目。在这个例子中,这将是 words_dict = {'apple':'tree', 'apple':'bee', 'apple'

我有一个由单词组成的source.txt文件。每一个单词都在一行中

apple
tree
bee
go
apple
see
我还有一个taget_words.txt文件,每个单词都在一行中

apple
bee
house
garden
eat
现在我必须在源文件中搜索每个目标词。如果找到目标词,例如apple,则应为目标词以及前3个和后3个单词中的每一个创建词典条目。在这个例子中,这将是

words_dict = {'apple':'tree', 'apple':'bee', 'apple':'go'}

如何通过创建和填充字典来考虑在SooCyScript文件的条目之前和之后的这3个单词来告诉Python? 我的想法是使用列表,但理想情况下,代码应该是非常有效和快速的,因为文件由数百万个单词组成。我想,对于列表,计算速度非常慢

from collections import defaultdict 

words_occ = {}
defaultdict = defaultdict(words_occ)
with open('source.txt') as s_file, open('target_words.txt') as t_file:
    for line in t_file:
        keys = [line.split()]
    lines = s_file.readlines()
    for line in lines:
        s_words = line.strip()
        # if key is found in s_words
        # look at the 1st, 2nd, 3rd word before and after 
        # create a key, value entry for each of them         
之后,我必须计算每个键、值对的出现次数,并将数字添加到单独的字典中,这就是为什么我开始使用defaultdict


对于以上代码的任何建议,我都很高兴。

您将面临的第一个问题是您对dicts缺乏理解。每个键只能出现一次,因此,如果您要求解释器提供您提供的键的值,您可能会得到一个惊喜:

>>> {'apple':'tree', 'apple':'bee', 'apple':'go'}
{'apple': 'go'}
问题是,只能有一个值与键
'apple'
关联


您似乎正在搜索合适的数据结构,但StackOverflow用于改进或修复有问题的代码。

如果您完全不知道如何执行此操作,我建议您阅读Python字典?请参见此处:“…为apple一词创建一个多维词典”。(对我来说)不清楚你到底想做什么。你所描述的听起来不像是一本“多维”词典,只是一本普通词典。建议您从一个
for
循环开始,该循环读取文件的每一行,并逐步构建所需的结构。好了,现在你知道怎么开始了!我编辑了问题的描述,希望能澄清所有问题。