如何制作一个字典来计算文件中任何单词的重复长度?

时间:2014-10-20 23:58:11

标签: python dictionary count

如何更正这一点,以便我的字典读取单词的长度=单词长度重复的次数?参数是一个文件。

def wordLengths(fileName):
    d = {}
    f = open(fileName)
    filename.close()
    for line in f:
            for word in line:
                if len(word) not in d:
                    d[len(word)] = count.len(word)
    return(d)

1 个答案:

答案 0 :(得分:1)

你走在正确的轨道上,但是你犯了一些错误。让我们逐行看一下。

def wordLengths(fileName): 
    d = {} 
    f = open(fileName)

到目前为止,这么好

    filename.close()

你无法关闭文件名 - 它只是一个字符串。您只能关闭文件对象,例如f。此外,filenamefileName不是一回事;资本化计数。此外,关闭文件还为时过早 - 您希望在阅读完所有行后执行此操作,否则您将无法阅读任何内容。因此,请废弃此行,并在f.close()之前添加return。 (with语句甚至更好,但你可能还没有学过这些语句。)

    for line in f:
        for word in line:

当你循环一个字符串时,你遍历字符串中的每个字符,而不是每个字。如果你想要单词,你必须拨打line.split()

            if len(word) not in d:
                d[len(word)] = count.len(word)

关闭,但不对。你想要的是:如果长度不在字典中,则存储1;否则,将1添加到已存在的内容中。你写的是:如果长度不存在,则存储长度(使用一些不存在的对象);否则,什么也不做。所以:

            if len(word) not in d:
                d[len(word)] = 1
            else:
                d[len(word)] += 1

    return(d)

那个很好(但记住它上面的f.close())。但是,写return d更为惯用。

还有一条评论:你应该与你的缩进一致:总是缩进4个空格,而不是随意混合1,4和7个空格。它使您的代码更容易阅读 - 特别是在Python中,缩进错误可能会改变代码的含义,并且当每个缩进级别不一致时很难发现。