对于输入文件中每个单词后面的每个单词,我们希望程序告诉我们该单词跟随它的次数。如果单词位于输入文件的末尾,则第一个单词就是后面的单词。
以下代码:
def word_cond_dictionary():
File = open('input.txt','r').readline()
words = File.split(",")
dic = {}
for i,val in enumerate(words):
if val in dic:
if words[i+1] in dic[val]:
dic[val][words[i+1]] +=1
else:
dic[val][words[i+1]] = 1
else:
dic[val] = {words[0]:1}
print(dic)
输入文件如下:
red,blue,blue,red,red,green
打印以下输出:
{'blue': {'red': 2}, 'green': {'red': 1}, 'red': {'green': 1, 'red': 2}}
但我们的输出应该是:
{'blue': {'red': 1, 'blue': 1}, 'green': {'red': 1}, 'red': {'green': 1, 'red': 1, 'blue: 1}}
答案 0 :(得分:0)
您可以轻松获取列表中的所有单词对
words = ["red","blue","red","red","blue","red","green","blue","red"]
from collections import Counter
print Counter(zip(words,words[1:]))
答案 1 :(得分:0)
我相信你所寻找的是Bag of Words模型。
http://en.wikipedia.org/wiki/Bag-of-words_model
给定的
给定一个包含文件全部内容的字符串,您可以使用find
函数找到所考虑的第一个单词的索引。例如,
text.find('red')
找到该索引后,您可以使用split
功能对逗号进行标记。
答案 2 :(得分:0)
以下是我对该问题的解决方案。我有一个非常类似的问题需要努力。它打印正确的输出。
f = open ('example.txt').readline()
line = f.translate(None, string.punctuation).lower().split()
myDict = {}
for k, val in list(enumerate(line)):
if k+1 < len(line):
if val in myDict:
if line[k+1] in myDict[val]:
myDict[val][line[k]] += 1
else:
myDict[val][line[k+1]] = 1
else:
myDict[val] = {line[k+1]:1}
print myDict