对于学校,我必须制作一个字典,其中包含有关文本文件中连续单词的信息。
对于文件中的每个单词,我必须输入单词(键)和匹配值,该匹配值包含可以跟随键的单词列表。
例如,以下句子:
"我认为你认为他会认为很漂亮"
给出以下输出:
{'': ['I'], 'I': ['think'], 'it': ['pretty.'] (...) 'think': ['you', 'he', 'it'], 'he': ['will']}
正如您所看到的,第一个条目''
有点奇怪,但它是有意的。我必须在我的代码中显式输入,值是仅包含文本的第一个单词的列表。
显然,没有条目可以“漂亮”。是关键。
我不擅长编程,而且我已经坚持这项练习超过一天了,这几乎就是我所拥有的:
def fill_up_dict(words):
style_dict = {}
prev_word = '' #empty string
for word in words
style_dict[prev_word]
#at a total loss here
return style_dict
也许你可以看到,但我试图创建所有单词的键列表,然后将值分配给它们之前的单词。但无论我做什么,它都没有丝毫的作用。
答案 0 :(得分:1)
修改您的方法:
def fill_up_dict(words):
style_dict = {}
prev_word = '' #empty string
for word in words
if prev_word not in style_dict:
style_dict[prev_word] = []
style_dict[prev_word].append(word)
prev_word = word
return style_dict
请注意,您需要在style_dict
中创建列表以添加单词,并且需要在每次迭代时更新prev_word
。
然而,处理连续单词的最简单方法是zip
:
def fill_up_dict(words):
style_dict = {"": [words[0]]}
for word1, word2 in zip(words, words[1:]):
if word1 not in style_dict:
style_dict[word1] = []
style_dict[word1].append(word2)
return style_dict
请注意,您可以使用collections.defaultdict
轻微简化:
from collections import defaultdict
def fill_up_dict(words):
style_dict = defaultdict(list)
style_dict[""] = [words[0]]
for word1, word2 in zip(words, words[1:]):
style_dict[word1].append(word2)
return style_dict