正在尝试从文本文件创建词典

2024-04-26 23:33:34 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我有一个文本文件(一个段落),我需要读取该文件并创建一个字典,其中包含文件中的每个不同单词作为键,每个键的对应值将是一个整数,显示该单词在文本文件中的频率。 字典应该是什么样的示例:

{'and':2, 'all':1, 'be':1, 'is':3}

到目前为止我有这个

def create_word_frequency_dictionary () :
filename = 'dictionary.txt'
infile = open(filename, 'r') 
line = infile.readline()

my_dictionary = {}
frequency = 0

while line != '' :
    row = line.lower()
    word_list = row.split()
    print(word_list)
    print (word_list[0])
    words = word_list[0]
    my_dictionary[words] = frequency+1
    line = infile.readline()

infile.close()

print (my_dictionary)

create_word_frequency_dictionary()

任何帮助都将不胜感激。你知道吗


Tags: 文件readlinedictionary字典mycreatelinefilename
3条回答

文档将^{}模块定义为“高性能容器数据类型”。考虑使用collections.Counter而不是重新发明轮子。你知道吗

from collections import Counter
filename = 'dictionary.txt'
infile = open(filename, 'r') 
text = str(infile.read())
print(Counter(text.split()))

更新: 好的,我修复了你的代码,现在它可以工作了,但计数器仍然是一个更好的选择:

def create_word_frequency_dictionary () :
    filename = 'dictionary.txt'
    infile = open(filename, 'r') 
    lines = infile.readlines()

    my_dictionary = {}

    for line in lines:
        row = str(line.lower())
        for word in row.split():
            if word in my_dictionary:
                 my_dictionary[word] = my_dictionary[word] + 1
            else:
                 my_dictionary[word] = 1

    infile.close()
    print (my_dictionary)

create_word_frequency_dictionary()

如果您不使用带有计数器的python版本:

>>> import collections
>>> words = ["a", "b", "a", "c"]
>>> word_frequency = collections.defaultdict(int)
>>> for w in words:
...   word_frequency[w] += 1
... 
>>> print word_frequency
defaultdict(<type 'int'>, {'a': 2, 'c': 1, 'b': 1})

只要用my_dictionary[words] = my_dictionary[words]+1替换my_dictionary[words] = frequency+1。你知道吗

相关问题 更多 >