为文件中的单词创建字典的函数

时间:2015-01-08 18:57:25

标签: file function python-2.7 dictionary

我试图创建一个函数,对于特定文件中的每个单词,它都会向字典添加一个新键,并且作为其值,它会添加一个列在该单词之后的每个单词。 我的代码因某些原因而无法正常工作我无法弄清楚。这是:

def mimica(input_file):
    d = {}
    f = open(input_file)
    w = f.read().split()
    f.close()
    a = len(w)
    for i in range(0, a):
        word = []
        b = i + 1
        for a in range(b, a):
            word.append(w[a])
        d[w[i]] = word
    return d

这是我的文件:

Car yellow and fast
Toy black and fun
Person tall and nice

这是我函数的输出:

{'and': [], 'Toy': ['black', 'and', 'fun'], 'Car': ['yellow', 'and', 'fast', 'Toy', 'black', 'and', 'fun', 'Person', 'tall', 'and', 'nice'], 'fast': ['Toy', 'black', 'and', 'fun', 'Person'], 'Person': [], 'black': ['and'], 'yellow': ['and', 'fast', 'Toy', 'black', 'and', 'fun', 'Person', 'tall', 'and'], 'fun': [], 'tall': [], 'nice': []}

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

    for a in range(b, a):

您已使用此循环覆盖a的先前值。尝试将名称更改为其他名称。

    for x in range(b, a):
        word.append(w[x])

结果:

{
    'Car': ['yellow', 'and', 'fast', 'Toy', 'black', 'and', 'fun', 'Person', 'tall', 'and', 'nice'], 
    'yellow': ['and', 'fast', 'Toy', 'black', 'and', 'fun', 'Person', 'tall', 'and', 'nice'], 
    'fast': ['Toy', 'black', 'and', 'fun', 'Person', 'tall', 'and', 'nice'], 
    'Toy': ['black', 'and', 'fun', 'Person', 'tall', 'and', 'nice'], 
    'black': ['and', 'fun', 'Person', 'tall', 'and', 'nice'], 
    'fun': ['Person', 'tall', 'and', 'nice'], 
    'Person': ['tall', 'and', 'nice'], 
    'tall': ['and', 'nice'], 
    'and': ['nice'], 
    'nice': []
}

(为了清楚起见,我添加了空白)