我有一个由单词组成的source.txt文件。每个单词在一个新的行
apple
tree
bee
go
apple
see
我还有一个taget_words.txt文件,其中每个单词也在一行中。
apple
bee
house
garden
eat
现在我必须在源文件中搜索每个目标单词。如果找到目标单词,例如apple,则应该为目标单词以及前三个和后三个单词中的每个单词创建一个字典条目。在示例中,它将是
words_dict = {'apple':'tree', 'apple':'bee', 'apple':'go'}
我如何通过创建和填充字典来告诉python在source_file条目之前和之后考虑这3个单词?我的想法是使用列表,但理想情况下,代码应该非常高效和快速,因为文件包含一些百万字。我想,对于列表,计算是很慢的。
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开始的原因。
你将面临的第一个问题是你对字典缺乏理解。每个键只能出现一次,所以如果你要求解释器给出你给出的值,你可能会得到一个惊喜:
>>> {'apple':'tree', 'apple':'bee', 'apple':'go'}
{'apple': 'go'}
问题是只能有一个值与键'apple'
相关联。
你似乎在寻找合适的数据结构,但StackOverflow是为了改进或修复有问题的代码。