Python初学者问题 - 字典

时间:2014-07-26 07:16:49

标签: python string python-3.x

我一直试图制作一个带有输出的程序:

Enter line: which witch
Enter line: is which
Enter line: 
is 1
which 2
witch 1

我希望它如何工作是为了输入几行,当没有提交任何内容时,它将计算每行的数量。

目前,我无法计算句子中的单个行数,只计算整个句子。我的代码:

dic = {}

while True:
    line = input('Enter Line: ')
    line = line.lower()    
    if not line:
        break

    dic.setdefault(line, 0)
    dic[line] += 1
for line, n in sorted(dic.items()):
    print(line, n)

产生输出:

Enter line: which witch
Enter line: is which
Enter line: 
which witch 1
is which 1

而不是第一个

任何帮助将不胜感激。感谢

1 个答案:

答案 0 :(得分:2)

代码使用每一行作为字典键,而不是单词。使用str.split拆分行并迭代单词。

dic = {}

while True:
    line = input('Enter Line: ')
    line = line.lower()    
    if not line:
        break
    for word in line.split():    # <-----
        dic.setdefault(word, 0)  # <-----
        dic[word] += 1           # <-----
for line, n in sorted(dic.items()):
    print(line, n)

BTW,考虑使用collections.Counter进行此类任务(计算事件)。