Python字数

Jam*_*ieB 1 python

wordsFreq = {}
words = []
while True:
    inputWord = raw_input()
    if (inputWord != ""):
        words.append(inputWord)
    else:
        break
for word in words:
    wordsFreq[word] = wordsFreq.get(word, 0) + 1

for word,freq in wordsFreq.items():
    print word + " - " + str(freq)
Run Code Online (Sandbox Code Playgroud)

显然我的单词[]和for循环是多余的,但我没有进一步的解释,任何人都可以向我解释为什么它是多余的?

yak*_*yak 7

您可以跳过构建单词列表的步骤,而是在用户输入单词时直接创建频率字典.我曾经defaultdict避免检查是否已经添加了一个单词.

from collections import defaultdict

wordsFreq = defaultdict(int)
while True:
    word = raw_input()
    if not word:
        break
    wordsFreq[word] += 1
Run Code Online (Sandbox Code Playgroud)

如果您不被允许使用defaultdict,它可能如下所示:

wordsFreq = {}
while True:
    word = raw_input()
    if not word:
        break
    wordsFreq[word] = wordFreq.get(word, 0) + 1
Run Code Online (Sandbox Code Playgroud)