统计文章中单词出现的次数

【问题描述】xcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

有若干个用空格分隔的英语单词,请你编写程序统计出现次数超过两次的单词及其出现次数。假设单词中只含有大小写英文字母,各单词之间只用若干个空格分隔。xcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

统计文章中单词出现的次数输入数据:xcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

Python is simple to use but it is a real programming language offering much more structure and support for large programs than shell scripts or batch files can offer On the other hand Python also offers much more error checking than C and being a very high level language it has high level data types built in such as flexible arrays and dictionaries Because of its more general data types Python is applicable to a much larger problem domain than Awk or even Perl yet many things are at least as easy in Python as in those languagesxcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

统计文章中单词出现的次数输出结果:xcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

(python:4),(is:3),(a:3),(much:3),(more:3),(and:3),(than:3),(in:3),(as:3)xcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

【题前思考】xcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

根据问题描述,填写表4-2-1。xcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

表4-2-1 问题分析xcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

统计文章中单词出现的次数xcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

【解题思路】xcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

首先使用字符串的split( )方法将字符串按空格切割构成列表,随后将列表中的单词全部转换为小写。使用字典统计各单词出现的次数,统计的目标是单词,所以以单词为键,以次数为值。对列表中的每一个单词,如果单词在字典中存在,就将字典中记录的单词个数的值加1;如果不存在,就以这个单词为键添加到字典中,将其值设为1,表示这个单词出现了1次。xcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

【程序代码】xcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

统计文章中单词出现的次数xcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

【代码分析】xcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

①:使用列表推导式取得文章中的单词列表。xcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

统计文章中单词出现的次数text.split( ):用空格切割text,保留空格间的字符串,连续空格切割出空串。xcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

...batch files can offer On the other hand Python...xcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

统计文章中单词出现的次数word:切割得到的列表,每一个元素用变量word迭代。xcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

batch,files,can,offer,,,On,the,other,hand,PythonxcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

统计文章中单词出现的次数word.lower( ):将变量word中的每个字母变成小写。xcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

batch,files,can,offer,,,on,the,other,hand,pythonxcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

②:定义一个空的字典wordNum(以单词为键、次数为值)来保存单词出现次数。xcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

③:使用字典统计单词个数。表达式word in wordNum成立表示这个单词在字典中存在,那么这个词对应的个数就应该加1(wordNum[word]+=1);反之,就应该在字典中为新词创建一个项目,其键就是这个新单词,值为1(第1次出现这个词)。xcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

④:使用列表推导式产生结果列表。xcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

统计文章中单词出现的次数wordNum.items( ):将每一个项变成元组,元组的第一个元素是键,第二个元素是值,再组成一个列表。xcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

统计文章中单词出现的次数xcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

统计文章中单词出现的次数for word,num in wordNum.items( )将wordNum.items( )列表中的每一个元素拆分成两个变量word和num,如('python',4)就拆成了'python',4两个变量。xcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

统计文章中单词出现的次数if len(word)>0 and num>2:筛选长度大于0且出现次数大于2的元素。xcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

统计文章中单词出现的次数f"({word}:{num})":对数据进行格式化,重新构成一个列表,字符串前的f表示需要将其中{}括起来的表达式转换成字符串。xcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

【优化提升】xcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

字典的用途很广,统计单词个数只是一个小应用,并非其长项。如果仅仅是统计数量,collections包中的Counter类可以提供更为便捷的方法。如果单词已处理好并放到列表words中,可以用如下代码实现以上相同功能。xcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

from collections import CounterxcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

print([x for x in Counter(words).items( )if len(x[0])>0 and x[1]>2])xcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

Counter(words).items( )会得到一个可迭代的dict_items对象,该对象的元素为二元组(键,值),具体到此例就为(单词,数量)。xcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

【技术全貌】xcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

Python中的字典类型提供了很多存储和操作映射数据的方法,表4-2-2中仅列出了其中常见的方法,全部方法及其说明请扫描二维码查阅官网文档。xcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

表4-2-2 字典方法xcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

统计文章中单词出现的次数xcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

续表xcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

统计文章中单词出现的次数xcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

注:由dict对象和Counter对象的 keys( ),values( ) 和 items( ) 所返回的对象都是视图对象。 该对象提供字典条目的一个动态视图,这意味着当字典改变时,视图也会相应改变。字典视图可以被迭代以产生与其对应的数据(for ... in),并支持成员检测(in和not in)。xcN100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

关 键 词

相关教程

提示声明

  • 免责声明:本站资源均来自网络或者用户投稿,仅供用于学习和交流:如有侵权联系删除!

猜你喜欢