Python 字频计数器

Python 字频计数器,python,dictionary,Python,Dictionary,这项练习需要使用字典,并计算每个单词在大量用户输入中出现的次数。它以某种方式工作,但不会将用户输入的每一行中的每一个单词都原子化。因此,不是将“快乐日”的输入计算为1 x快乐日和1 x快乐日,而是给我1 x快乐日。我已经尝试过将其与较低的一起拆分,但这会将输入转换为一个列表,我正在努力将该列表放入字典中 正如你可能已经猜到的,我是一个新手,所以所有的帮助将不胜感激 occurrences = {} while True: word = input('Enter line: ')

这项练习需要使用字典,并计算每个单词在大量用户输入中出现的次数。它以某种方式工作,但不会将用户输入的每一行中的每一个单词都原子化。因此,不是将“快乐日”的输入计算为1 x快乐日和1 x快乐日,而是给我1 x快乐日。我已经尝试过将其与较低的一起拆分,但这会将输入转换为一个列表,我正在努力将该列表放入字典中

正如你可能已经猜到的,我是一个新手,所以所有的帮助将不胜感激

occurrences = {}
while True:
    word = input('Enter line: ')
    word = word.lower() #this is also where I have tried a split()
    if word =='':
        break
occurrences[word]=occurrences.get(word,0)+1
for word in (occurrences):
    print(word, occurrences[word])
编辑

为回应欢呼。这最终成为了最终的解决方案。他们并不担心这个案子,希望最终的结果能够得到整理

occurrences = {}
while True:
    words = input('Enter line: ')
    if words =='':
        break
    for word in words.split(): 
        occurrences[word]=occurrences.get(word,0)+1
for word in sorted(occurrences):
    print(word, occurrences[word])

你所拥有的几乎就在那里,你只想在将单词添加到dict时循环这些单词

occurrences = {}
while True:
    words = input('Enter line: ')
    words = words.lower() #this is also where I have tried a split()
    if words =='':
        break
    for word in words.split(): 
        occurrences[word]=occurrences.get(word,0)+1
    for word in (occurrences):
        print(word, occurrences[word])

此行未执行:引用[word]=引用。getword,0+1

因为如果它进入if,它将进入中断,并且永远不会执行该行。如果不缩进,则使其位于外部


一般来说,所发布代码的缩进是乱七八糟的,我想这与实际代码中的情况不太一样。

您想要逐行统计还是总体统计?我猜您需要逐行输入,但也可以通过在以下代码中取消注释几行来轻松获得总体统计信息:

# occurrences = dict()  # create a dictionary here if yuo want to have incremental overall stats
while True:
    words = input('Enter line: ')
    if words =='':
        break
    word_list = words.lower().split()
    print word_list
    occurrences = dict()  # create a dict here if you want line by line stats
    for word in word_list:
        occurrences[word] = occurrences.get(word,0)+1

    ## use the lines bellow if you want line by line stats
    for k,v in occurrences.items():
        print k, " X ", v

## use the lines bellow if you want overall stats
# for k,v in occurrences.items():
    # print k, " X ", v

你能给我们一些你的代码输入和输出的示例吗?分割输入行后,你应该遍历新形成的列表,将每个单词添加到字典计数器中。另外,我不确定这是你的帖子还是你的原始代码的一部分,但你的代码似乎没有机会打破while循环,因为此处的缩进不正确post@dm03514,counter是一个很好的建议,但OP说这个练习需要字典。