Loading

7-4 jmu-Java&Python-统计文字中的单词数量并按出现次数排序 (25分)

现在需要统计若干段文字(英文)中的单词数量,并且还需统计每个单词出现的次数。

注1:单词之间以空格(1个或多个空格)为间隔。
注2:忽略空行或者空格行。

基本版:
统计时,区分字母大小写,且不删除指定标点符号。

进阶版:

统计前,需要从文字中删除指定标点符号! . , : * ?。 注意:所谓的删除,就是用1个空格替换掉相应字符。
统计单词时需要忽略单词的大小写。
输入说明
若干行英文,最后以!!!!!为结束。

输出说明#

单词数量
出现次数排名前10的单词(次数按照降序排序,如果次数相同,则按照键值的字母升序排序)及出现次数。

输入样例1#

failure is probably the fortification in your pole

it is like a peek your wallet as the thief when you
are thinking how to spend several hard-won lepta

when you are wondering whether new money it has laid
background because of you then at the heart of the

most lax alert and most low awareness and left it

godsend failed
!!!!!

输出样例1#

46
the=4
it=3
you=3
and=2
are=2
is=2
most=2
of=2
when=2
your=2

输入样例2#

Failure is probably The fortification in your pole!

It is like a peek your wallet as the thief when You
are thinking how to. spend several hard-won lepta.

when yoU are? wondering whether new money it has laid
background Because of: yOu?, then at the heart of the
Tom say: Who is the best? No one dare to say yes.
most lax alert and! most low awareness and* left it

godsend failed
!!!!!

输出样例2#

54
the=5
is=3
it=3
you=3
and=2
are=2
most=2
of=2
say=2
to=2

解题过程:#

python3中移除了sort中的cmp,利用cmp_to_key及自订函数进行排序

python代码:#

from functools import cmp_to_key

def cmpkey2(x,y):
    if x[1]>y[1]:
        return  1
    elif x[1]<y[1]:
        return  -1
    elif x[0]>y[0]:
        return  -1
    elif x[0]<y[0]:
        return  1
    return 0

text = ""
while True:
    s = input()
    if s == '!!!!!':
        break
    text += ' '
    text += s
text = text.lower()
for ch in '!.,:*?':
    text=text.replace(ch, ' ')
cnt = {}
for word in text.split():
    cnt[word] = cnt.get(word, 0) + 1
items = list(cnt.items())
items.sort(key=cmp_to_key(cmpkey2),reverse=True)
print(len(items))
for i in range(10):
    if i>=len(items):
        break
    key, val = items[i]
    print("{}={}".format(key, val))

posted @   GrayKido  阅读(3462)  评论(0编辑  收藏  举报
编辑推荐:
· .NET开发智能桌面机器人:用.NET IoT库编写驱动控制两个屏幕
· 用纯.NET开发并制作一个智能桌面机器人:从.NET IoT入门开始
· 一个超经典 WinForm,WPF 卡死问题的终极反思
· ASP.NET Core - 日志记录系统(二)
· .NET 依赖注入中的 Captive Dependency
阅读排行:
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(二):用.NET IoT库
· 几个自学项目的通病,别因为它们浪费了时间!
· 在外漂泊的这几年总结和感悟,展望未来
· .NET 数据拷贝方案选择
· .net工作流elsa-书签
点击右上角即可分享
微信分享提示
主题色彩