如何在文本中构建单词词典

时间:2017-02-14 00:39:04

标签: python dictionary

如何返回字典,其中键是给定文本中的单词,而值是文本中先前单词的列表?

e.g。

install

打印字典:

text = "hi my name is"    
get_previous_words_dict(text):

4 个答案:

答案 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)

  1. 将句子分成单词:

    sentence_words = sentence.split(' ')
    
  2. 创建一个字典,其中键是单词,值是从该单词的开头到位置的sentence_words切片。

    d = {w: sentence_words[:i] for i, w in enumerate(sentence_words)}
    
  3. 示例代码

    sentence = "Hi my name is John"
    sentence_words = sentence.split(' ')
    d = {w: sentence_words[:i] for i, w in enumerate(sentence_words)}