Python初学者问题-字典

Python初学者问题-字典,python,string,python-3.x,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()

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

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
而不是第一个


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

代码将每一行用作字典关键字,而不是单词。使用和迭代单词拆分行

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)
dic={}
尽管如此:
行=输入('输入行:')
line=line.lower()
如果不是直线:
打破

对于line.split():#…中的单词,或使用
dic[word]=dic.get(word,0)+1
,而不是使用
setdefault
(它本身调用
get()
,并返回您未使用的值)。谢谢。我花了很多时间在这上面!