浙大版《Python 程序设计》题目集第7章-1 词频统计 (30 分)
lower=list('abcdefghijklmnopqrstuvwxyz')
upper=list('ABCDEFGHIJKLMNOPQRSTUVWXYZ')
digit=list('1234567890')
def isright(s):
if (s in lower) or (s in digit) or (s in upper) or s=='_':
return True
return False
s=''
while True:
s1=input()
s=s+' '+s1
if '#' in s1:
break
d={}
c=''
for i in s:
if i=='#':
break
if isright(i):
if i in upper:
i=lower[upper.index(i)]
c+=i
else:
if c!='':
if len(c)>15:
c=c[:15]
d[c]=d.get(c,0)+1
c=''
print(len(d))
newd={}
for k,v in d.items():
if newd.get(v)==None:
newd[v]=[k]
else:
newd[v].append(k)
newd[v].sort()
dlist=list(newd.items())
dlist.sort(key=lambda x:x[0],reverse=True)
length=int(len(d)*0.1)
count=0
newd=dict(dlist)
for i in newd.keys():
for j in newd[i]:
if count<length:
print(str(i)+':'+j)
count+=1
else:
break
if count==length:
break
最后依据列表dlist输出,不用再转换成字典newd
for i in dlist:
for j in i[1]:
if count<length:
print(str(i[0])+':'+j)