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

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

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

进阶版:

  1. 统计前,需要从文字中删除指定标点符号!.,:*?。 注意:所谓的删除,就是用1个空格替换掉相应字符。
  2. 统计单词时需要忽略单词的大小写。

输入说明

若干行英文,最后以!!!!!为结束。

输出说明

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

输入样例1

failure is probably the fortification in your poleit is like a peek your wallet as the thief when you
are thinking how to spend several hard-won leptawhen you are wondering whether new money it has laid
background because of you then at the heart of themost lax alert and most low awareness and left itgodsend 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 itgodsend failed
!!!!!

结尾无空行

输出样例2

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

结尾无空行

解析:

这个题目主要难在sorted的运用,其实我也不是很会用这个,我今天仔细研究了一下这个。

引用一下sorted简单介绍,同样的,我这里也要引用lambda的说明,因为排序也需要lambda的使用,下面为引用:


sorted:

sorted(iterable, key=None, reverse=False) 
  • iterable -- 可迭代对象。
  • key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
  • reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。

lambda:

lambda arg1,arg2,.....argn:expression

lambda 即匿名函数


ok,那我们就可以来听听我来讲这个了:

那我们先从简单的开始:

lambda:匿名函数,即使引入字符按照表述进行变化,即如果我写一个

f=lambda x:x*(-1)

那么我写的其实就等于:

def f(x):x=-1*x

那这就很显而易见了。

这个理解之后,我们进行分析sorted:

那我们来分析一下括号里的内容吧:

iterable -- 可迭代对象。即像列表、元祖、字典等这种都可以使用,这个就是与sort的第一个不同,适用范围更大。

key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。即,我们可以自定义一个函数,然后迭代即按照这个函数值来排序。

reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。即由我们来选择升序or降序排序。

这里我们大概就会有一些自己的想法了:那我们就以这个题目为例,来实践一下吧:

我们先思考我们的迭代对象是什么呢?如果只按照值排序,那就是dict.items()对吧,然后key呢?我们需要用用产生的列表中的元组的第二个值进行排序(即用值排序),那我们补齐试试

sorted(dict.items(), key=lambda item: item[1], reverse=True)

能理解可以跳过这个模块:

我觉得我需要仔细讲一下这个key,第一点,这里是个函数,即我们通过每一项(每一项都是元组)的第二个(即原来字典的值)进行排序

lambda i: i[1]               #和lambda item: item[1]一样,学懂了吗?

那么下面的,我们接着来吧

然后同理,我们如果用值和键进行排序的话只需要变一下key,key这边需要我们先排序值,再排序键(key=lambda item: (item[1],-item[0])放在前的为首要排序,后为次要),那就这样:

sorted(dict.items(), key=lambda item: (item[1],-item[0]), reverse=True)

既然上面说了,reverse有默认值,那我们可以偷一下懒:

sorted(dict.items(), key=lambda item: (-item[1],item[0]))

那我们就成功解决了lambde和sorted了。大家可以去完成这个题目,来看看自己掌握的怎么样呀!

答案:

# Description: 命里有时终须有,命里无时莫强求
# Autor: Neptune
# Date: 2021/11/10 17:17
dict1 = {}
sum1 = 0
while True:str = input()lis = list(str.lower().split())if len(lis) == 0:continueelse:if "!!!!!" in lis:breakfor i in lis:for q in "!.,:*?":i = i.replace(q, '')if i.lower() in dict1:dict1[i.lower()] += 1else:dict1[i.lower()] = 1
sum1 = len(dict1)
print(sum1)
sum1 = 0
for i in sorted(dict1.items(), key=lambda x: (-x[1], x[0])):    #对dict1先用item排序,然后将出来的列表中的每一个元组,用首项正排序,第二项逆排序if sum1 == 10:breakprint("%s=%s" % (i[0], i[1]))sum1 += 1

7-1 jmu-JavaPython-统计文字中的单词数量并按出现次数排序 (25 分)相关推荐

  1. PTA12、 统计文字中的单词数量并按出现次数排序 (10 分)

    12. 统计文字中的单词数量并按出现次数排序 (10 分) 现在需要统计若干段文字(英文)中的单词数量,并且还需统计每个单词出现的次数. 注1:单词之间以空格(1个或多个空格)为间隔. 注2:忽略空行 ...

  2. python统计单词出现次数并排序_7-4 jmu-JavaPython-统计文字中的单词数量并按出现次数排序 (25分)...

    现在需要统计若干段文字(英文)中的单词数量,并且还需统计每个单词出现的次数. 注1:单词之间以空格(1个或多个空格)为间隔. 注2:忽略空行或者空格行. 基本版: 统计时,区分字母大小写,且不删除指定 ...

  3. 7-35 jmu-JavaPython-统计文字中的单词数量并按出现次数排序

    7-35 jmu-Java&Python-统计文字中的单词数量并按出现次数排序 分数 25 全屏浏览题目切换布局 作者 郑如滨 单位 集美大学 现在需要统计若干段文字(英文)中的单词数量,并且 ...

  4. 7-3 jmu-JavaPython-统计文字中的单词数量并按出现次数排序

    现在需要统计若干段文字(英文)中的单词数量,并且还需统计每个单词出现的次数. 注1:单词之间以空格(1个或多个空格)为间隔. 注2:忽略空行或者空格行. 基本版: 统计时,区分字母大小写,且不删除指定 ...

  5. 7-30 jmu-JavaPython-统计一段文字中的单词个数并按单词的字母顺序排序后输出 (25 分)

    7-30 jmu-Java&Python-统计一段文字中的单词个数并按单词的字母顺序排序后输出 (25 分) 现需要统计若干段文字(英文)中的不同单词数量. 如果不同的单词数量不超过10个,则 ...

  6. 7-1 jmu-JavaPython-统计一段文字中的单词个数并按单词的字母顺序排序后输出

    7-1 jmu-Java&Python-统计一段文字中的单词个数并按单词的字母顺序排序后输出 (15 分) 现需要统计若干段文字(英文)中的不同单词数量. 如果不同的单词数量不超过10个,则将 ...

  7. Python实现统计文本中各单词数量

    Python实现统计文本中各单词数量 代码 运行结果 代码 import strings = 'not talk,not helo show me your code hello helo' for ...

  8. 统计一段文字中的单词个数并按单词的字母顺序排序后输出

    现需要统计若干段文字(英文)中的不同单词数量. 如果不同的单词数量不超过10个,则将所有单词输出(按字母顺序),否则输出前10个单词. 注1:单词之间以空格(1个或多个空格)为间隔. 注2:忽略空行或 ...

  9. PTA(每日一题)7-1 jmu-JavaPython-统计一段文字中的单词个数并按单词的字母顺序排序后输出

    现需要统计若干段文字(英文)中的不同单词数量. 如果不同的单词数量不超过10个,则将所有单词输出(按字母顺序),否则输出前10个单词. **注1:**单词之间以空格(1个或多个空格)为间隔. **注2 ...

最新文章

  1. 从0开始,基于Python探究深度学习神经网络
  2. 无异常日志,就不能排查问题了???
  3. 首尾相连的一位数组最大子数组和
  4. Spark- Checkpoint原理剖析
  5. File /usr/bin/pip, line 11, in module sys.exit(__main__._main()) AttributeError: 'module' ob...
  6. php bing翻译的api,使用PHP和SOAP访问Bing翻译服务
  7. 裴礼文3.2.34解答
  8. OBS 电脑推流直播指南
  9. python解析XML
  10. 新点软件怎么导入清单_新点造价软件的QDZ招投标清单使用说明
  11. 怎么关闭服务器系统自动更新,自动更新怎么关闭 如何关闭window自动更新提高运行速度...
  12. DeepFool: a simple and accurate method to fool deep neural networks
  13. 佳能数码相机照片删除了怎么恢复,如何恢复还原佳能相机误删的照片
  14. 水星路由器wan口ip显示0_路由器wan口状态全是0 路由器wan口状态ip为0-192路由网
  15. 叫你怎么设置手机成空号
  16. Bpy三维图像建模基础库——(01)库的安装
  17. JS实现抽奖代码(0-999随机数开始暂停抽奖按钮)
  18. iOS开发 - App语言国际化
  19. ValueError: Classification metrics can‘t handle a mix of binary and continuous targets
  20. 嵌入式linux启动信息完全注释

热门文章

  1. 数据结构——二路归并排序和基数排序
  2. 区块链基础设施概览:第一性原理框架
  3. QT: 界面隐藏后台显示
  4. 寻找矩阵最值(C语言)
  5. math: 判断两个向量之间夹角是逆时针或顺时针
  6. 银行卡开户银行、名称缩写等信息查询
  7. IDEA设置package包的展现方式
  8. matlab-3D装箱代码
  9. 判断圆和线相切java_通过直线与圆交点数,轻松判断直线与圆关系,相离、相交、相切...
  10. 3、DQL(数据查询语句)