import jieba file=open(r"C:\Users\yikandan\Desktop\红楼梦.txt","r",encoding='utf-8') txt=file.read() wordsList=jieba.lcut(txt) actors=[('贾宝玉',"宝玉"),("林黛玉","黛玉"),("薛宝钗","宝钗"),("王熙凤","凤姐"),("贾母","老太太"),("袭人",),("探春",),('贾琏',),('王夫人','夫人')] dictActors={} for actor in actors: if len(actor)==2: count1=wordsList.count(actor[0]) count2=wordsList.count(actor[1]) dictActors[actor[0]]=count1+count2 else: count1=wordsList.count(actor[0]) dictActors[actor[0]]=count1+count2 items=list(dictActors.items()) items.sort(key=lambda x:x[1],reverse=True) for i in range(len(items)): word,count=items[i] print("{}\t{}".format(word,count))给我逐行解释这段代码
时间: 2023-11-02 09:06:23 浏览: 74
jieba-0_jieba安装0.4.1_jieba-0.42.1.tar_jieba-0.42.1.tar.gz_jieba-
5星 · 资源好评率100%
这段代码的作用是读取《红楼梦》这本小说,并统计其中出现的人物名字及其出现的次数。
第一行导入了一个分词库jieba。
第二行打开了一个文件,读取了《红楼梦》这本小说的文本内容,并赋值给变量txt。
第三行使用jieba对txt进行分词,将分词结果存储在列表wordsList中。
第四行定义了一个列表actors,其中包含了小说中出现的人物名字。每个元素都是一个元组,如果一个人物有多个名字,那么这个元组就包含多个元素。
第五行定义了一个空字典dictActors,用于统计每个人物名字在小说中出现的次数。
第六行开始遍历actors中的元素。如果元素是一个包含两个人物名字的元组,那么分别统计这两个人物名字在小说文本中出现的次数,并将这两个次数相加得到这个人物总的出现次数。然后将人物名字作为键,出现次数作为值存入字典dictActors中。如果元素只包含一个人物名字,那么直接统计这个人物名字在小说文本中出现的次数,并将人物名字作为键,出现次数作为值存入字典dictActors中。
第十行将字典dictActors中的所有键值对以列表的形式取出来,赋值给变量items。
第十一行对items进行排序,排序的方式是按照每个键所对应的值(出现次数)进行降序排序。
第十三行开始遍历排序后的列表items,将每个人物名字及其出现次数以一定的格式输出到屏幕上。
阅读全文