4.4.2 字典的遍历(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)

2024-08-10
| 28页
| 62人阅读
| 11人下载
普通

内容正文:

任务4.4 字典 英文文章词频统计 乔布斯演讲视频视频https://www.bilibili.com/video/BV1oW411h7Ea/?buvid=XYCD883C82C8FF6C8D7E17FA4E282A15D85E0&is_story_h5=false&mid=CaOiyKrXdDTI6%2F1JhrWrFQ%3D%3D&p=1&plat_id=114&share_from=ugc&share_medium=android&share_plat=android&share_session_id=1a8c3ce5-5c2f-4227-9589-ae80d909f4c7&share_source=WEIXIN&share_tag=s_i&timestamp=1678182661&unique_k=mDzFCco&up_id=29958079 4.4 字典——英文文章词频统计 4.4 字典——英文文章词频统计 【任务描述】 词频统计有助于我们从大量的文本中获得主旨,这是机器学习处理自然语言文本的一种基础手段。小T为快速解读出乔布斯在斯坦福大学的英文演讲稿的关键内容,他通过统计该演讲稿中出现频率较高的词语来确定演讲稿主要内容。 在英文文本中,单词间用空格或者标点符号进行分隔,其词频的统计较容易实现。由于统计时需要明确词及词频二者的映射关系,因此可以利用Python组合数据类型中的字典数据类型来实现。 4.4 字典——英文文章词频统计 如何快速解读文章? 如何统计词频? 词和词频用什么数据类型表示? the:103,life:17 4.4 字典——英文文章词频统计 【任务分析】 对要分析的演讲稿需要逐个读出其中的单词,并利用Python中的字典、列表等数据类型对单词进行标识和统计,整体思路的框架如下: (1)定义字符串,存储英文演讲稿。 (2)对字符串进行分词,遍历所有单词,进行词频统计。 (3)输出文章中出现频率最高的前50个单词及词频。 4.4.1 字典的基本操作:创建、访问、添加/删除元素 4.4.2 字典的遍历 4.4.3 字典任务实现——英文文章词频统计 4.4 字典——英文文章词频统计 4.4.2 字典的遍历 4.4.2 字典的遍历 字典的几种遍历方式 如何实现遍历? 可以用for…in…来遍历字典元素,遍历的对象包括“键”与“值”。 1.通过键遍历字典 for key in 字典.keys(): 访问字典键 可以先通过keys()属性获取字典的键,再用for语句遍历字典的键,其访问方法如下: 4.4.2 字典的遍历 4.4.2 字典的遍历 dictHan = {"name":"韩梅梅","address":"杭州","age":19} for key in dictHan.keys():     print("键%s的值是:%s"%(key,dictHan[key])) 【例4-52】通过键遍历字典。 键name的值是: 韩梅梅 键address的值是: 杭州 键age的值是: 19 2.通过值遍历字典 for value in 字典.values(): 访问字典值 可以通过values()属性获取字典的值,并用for语句进行字典值的遍历,相关的用法如下: 4.4.2 字典的遍历 4.4.2 字典的遍历 dictHan = {"name":"韩梅梅","address":"杭州","age":19} for value in dictHan.values():     print("字典中有值是:%s"%(value)) 【例4-53】通过值遍历字典。 字典中有值是:韩梅梅 字典中有值是:杭州 字典中有值是:19 注意:通过值遍历字典有一个缺陷,就是无法获取字典的键,所以字典的遍历需要根据实际应用的需要来确定遍历方法。 3.通过键值对遍历字典 for key, vaule in 字典.items(): 访问字典键值对 可以通过dict.items()属性获取字典的键-值对,并返回可遍历的(键,值)元组。items() 方法把字典中每对key和value组成一个元组,由此结合items的特性,我们同样可以用for语句,并结合key、value进行字典键-值对的遍历,相关的用法如下: 4.4.2 字典的遍历 4.4.2 字典的遍历 【例4-54】通过items()遍历字典。 ('name', '韩梅梅') ('address', '杭州') ('age', 19) 键name的值是:韩梅梅 键address的值是:杭州 键age的值是:19 dictHan = {"name":"韩梅梅","address":"杭州","age":19} for item in dictHan.items(): print(item, end=' ') # 返回字典中键-值对元组 print(' ') for key,value in dictHan.items(): print("键%s的值是:%s"%(key,value)) # 返回字典中的键、值 4.4.2 字典的遍历 边学边练: 定义一个字典,取班级前3学号同学,把学号和姓名定义成字典的键值对。 (1)遍历字典,打印出字典的键和值。 (2)对学号为“3”的同学改名为“张无忌”,添加学号为“4”的同学“令狐冲”,删除学号为“1”的同学。 (3)再次打印出字典中所有的键和值。 4.4.3 字典任务实现——英文文章词频统计 4.4.3 字典任务实现——英文文章词频统计 【任务描述】 小T要快速解读出乔布斯的演讲稿“4-55.txt”的关键内容,通过学过的列表、字典等数据类型的相关知识就可以实现。 4.4.3 字典任务实现——英文文章词频统计 如何快速解读文章? 如何统计词频? 词和词频用什么数据类型表示? the:103,life:17 4.4.3 字典任务实现——英文文章词频统计 【任务分析】 先读入演讲稿,因为英文句子中的首个单词需要大写,所以为防止相同单词统计到不同单词中,小T将演讲稿中所有字符都转换成小写;同时,句子间有很多的标点符号,不利于后续的单词分割,统一替换成空格作为分隔符,这样整篇演讲稿就成了词间以空格分隔的字符串;然后将这个字符串切分成列表,对列表中每个单词出现的频次进行统计,单词和词频以字典形式存储。编程思路如下: 4.4.3 字典任务实现——英文文章词频统计 【任务分析】 (1)定义字符串,读入演讲稿。 (2)对字符串转换成小写、处理标点符号成空格。 (3)定义一个字典,保存词频,该字典以词为键,以频次为值。 (4)对(2)中得到的字符串进行切分,切分成列表。 (5)遍历列表,记录出现的词。若该词第一次出现,则设置以其为键的值;若非第一次出现,则其值加1。 (6)将字典按词频从高到低进行排序,并输出频次最高的50个词和词频。 4.4.3 字典任务实现——英文文章词频统计 读入演讲稿到字符串 键值=1 该词第一次出现 N N 定义字典存储词频 访问列表完成 键值+1 排序输出词频 (1)定义字符串,读入演讲稿 (4)遍历列表,单词第一次出现,则将其键的值设为1;若非第一次出现,则其值加 1 处理字符串(大小写、标点等) 切分成列表 (2)处理字符串大小写、标点符号等,切分成列表 (3)定义字典存储词频,字典以词为键,以频次为值 Y Y (5)将词频排序输出 4.4.3 字典任务实现——英文文章词频统计 f=open('4-55.txt') strWord=f.read() f.close() (1)定义字符串,读入演讲稿 4.4.3 字典任务实现——英文文章词频统计 for ts in '",-.:;?!\'': strWord = strWord.replace(ts," ") # 把特殊字符给替换成空格 lstWord=strWord.replace(' ',' ').lower().split() # 把所有单词转换成小写,并切分成列表 print(lstWord) (2)处理字符串大小写、标点符号等,切分成列表 ['thank', 'you', 'i', 'm', 'honored', 'to', 'be', 'with', 'you', 'today', 'for', 'your', 'commencement', 'from', 'one', 'of', 'the', 'finest', 'universities', ...... 运行结果 4.4.3 字典任务实现——英文文章词频统计 dicWordcount={} (3)定义字典存储词频,字典以词为键,以频次为值 for word in lstWord: if word in dicWordcount.keys(): dicWordcount[word]=dicWordcount[word]+1 else: dicWordcount[word]=1 (4)遍历列表,单词第一次出现,则将其键的值设为1;若非第一次出现,则其值加 1。 知识补充 sorted(iterable[, key[, reverse]]) (1)iterable指定要排序的对象,可以是列表、字符串、字典、集合等; (2)key为函数,指定取待排序元素的哪一项进行排序 (3)reverse是一个bool变量,默认为false(升序排列),定义为True时将按降序排列。 lstResult=sorted(dicWordcount.items(),key=lambda x:x[1], reverse=True) 4.4.3 字典任务实现——英文文章词频统计 知识补充 Lambda函数又称匿名函数,匿名函数就是没有名字的函数,基本语法格式 lambda 形式参数 : 函数表达式 例子 lambda arg1, arg2: arg1 + arg2 lstResult=sorted(dicWordcount.items(),key=lambda x:x[1], reverse=True) 4.4.3 字典任务实现——英文文章词频统计 4.4.3 字典任务实现——英文文章词频统计 lstResult=sorted(dicWordcount.items(),key=lambda x:x[1],reverse=True) # 按字典的值排序 print(lstResult[0:50]) (5)将词频排序输出 [('the', 103), ('i', 94), ('to', 71), ('and', 69), ('it', 52), ('was', 49), ('a', 46), ('that', 43), ('of', 41), ('you', 36), ('in', 36), ('my', 30), ('is', 27), ('out', 20), ('with', 19), ('had', 19), ('t', 19), ('for', 18), ('life', 17), ('so', 17), ('me', 17), ('your', 15), ('as', 15), ('all', 15), ('on', 15), ('what', 15), ('have', 15), ('be', 14), ('but', 14), ('from', 13), ('college', 13), ('when', 13), ('s', 11), ('do', 11), ('about', 10), ('at', 10), ('we', 10), ('one', 9), ('this', 9), ('no', 9), ('they', 9), ('would', 9), ('years', 9), ('apple', 9), ('just', 8), ('very', 8), ('if', 8), ('never', 7), ('dropped', 7), ('months', 7)] 运行结果 life college years、months apple dropped 4.4.3 字典任务实现——英文文章词频统计 英文文章解读 $$

资源预览图

4.4.2 字典的遍历(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
1
4.4.2 字典的遍历(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
2
4.4.2 字典的遍历(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
3
4.4.2 字典的遍历(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
4
4.4.2 字典的遍历(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
5
4.4.2 字典的遍历(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
6
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。