如何返回字典,其中键是给定文本中的单词,而值是文本中先前单词的列表?
e.g。
install
打印字典:
text = "hi my name is"
get_previous_words_dict(text):
答案 0 :(得分:1)
如果@cjds指出,句子中的单词是唯一的,这才有意义。此外,第一个单词的值肯定应该是一个空列表,而不是包含空字符串的列表。以下内容符合此规范:
def get_previous_words_dict(text):
words = []
dictionary = {}
for word in text.split():
dictionary[word] = words[:]
words.append(word)
return dictionary
最重要的是要分配:
dictionary[word] = words[:]
这样做的效果是复制单词数组。如果这是正常的任务:
dictionary[word] = words
然后,这将使每个字典条目引用相同的words
列表,因此在循环结束时,字典中的每个条目都将包含所有单词。
答案 1 :(得分:1)
>>> t="hi my name is"
>>> li=t.split()
你可以使用词典理解:
>>> {w:[li[si] for si in range(i-1,-1,-1)] for i, w in enumerate(li)}
{'is': ['name', 'my', 'hi'], 'hi': [], 'my': ['hi'], 'name': ['my', 'hi']}
或者,向上计数:
>>> {w:[li[si] for si in range(0,i)] for i, w in enumerate(li)}
{'is': ['hi', 'my', 'name'], 'hi': [], 'my': ['hi'], 'name': ['hi', 'my']}
或者使用切片而不是嵌套列表解析:
>>> {w:li[0:i] for i, w in enumerate(li)}
{'is': ['hi', 'my', 'name'], 'hi': [], 'my': ['hi'], 'name': ['hi', 'my']}
答案 2 :(得分:0)
如果我从头开始实施:
使用哈希来存储单词,这用作字典。 插入哈希时,插入为key => [以前的哈希键]。
答案 3 :(得分:0)
将句子分成单词:
sentence_words = sentence.split(' ')
创建一个字典,其中键是单词,值是从该单词的开头到位置的sentence_words
切片。
d = {w: sentence_words[:i] for i, w in enumerate(sentence_words)}
sentence = "Hi my name is John"
sentence_words = sentence.split(' ')
d = {w: sentence_words[:i] for i, w in enumerate(sentence_words)}