统计词频问题

adict={}
x=input().lower() #把单词大写字母改为小写字母
for i in x:
    if i in [',','.',"'",'"','!']:
        x=x[:x.index(i)]+x[x.index(i)+1:]  #把句子中的非字母字符用切片操作删掉
aset=set(x.split(' '))  #集合的好处在于不重复
alst=x.split(' ')
for n in aset:
    tempdict={n:alst.count(n)}
    adict.update(tempdict)  #字典的update方法,把tempdict内容添加到adict里面
sorted(adict)  #排序
for w in adict:
    print(w,adict[w])

 第五行也可以用字符串的replace方法

x=x.replace(i,' ')

倒三行的排序,优化成:先按照词频排序,如果词频相同,则按照词语排序(ASCII)

lst=sorted(adict.items(),key=lambda x:(x[1],x[0]))
#最终解答:
adict={}
x=input().lower()
for i in x:
    if i in [',','.',"'",'"','!']:
        x=x[:x.index(i)]+x[x.index(i)+1:]
aset=set(x.split())
alst=x.split(' ')
for n in aset:
    tempdict={n:alst.count(n)}
    adict.update(tempdict)
lst=sorted(adict.items(),key=lambda x:(x[1],x[0]))
for w in lst:
    print(w[0],w[1])

 

转载于:https://www.cnblogs.com/Joanna-2019/p/10678826.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值