复合数据类型,英文词频统计
作业的要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2696
1.列表,元组,字典,集合分别如何增删改查及遍历。
- 列表操作
# -*- coding: utf-8 -*- # 定义一个列表 textList = ['cd','rm','mkdir','cat','tar'] # 列表增加 textList.append('gunzip') textList.insert(2 , 'qzip') # 列表删除 textList.pop(1) del textList[3] # 列表修改 textList[1] = 'love' # 列表遍历 for i in range(len(textList)): print(textList[i])
- 元组操作
# 定义元组 tuple1 = (1,2,3,4,5,6) tuple1 = tuple([1,2,3,4]) #序列->元组 # 遍历元组 for i in range(len(tuple1)): print(tuple1[i])
- 字典操作
# 创建字典 textDict = {'xiaoming':'80','xiaobai':'90'} print(textDict) # 增加操作 textDict['xiaohong']='100' print(textDict) # 修改操作 textDict['xiaoming']='100' print(textDict) # 删除操作 del textDict['xiaoming'] print(textDict) # 查找操作 print(textDict['xiaobai']) # 遍历操作 for s in textDict: print( "%s : %s"%(s,textDict[s]))
- 集合
# 两种方法创建 set1 = set('kydaa') set2 = {'abc', 'jaja', 'abc', 'kyda'} print(set1) print(set2) # 结果:自动将重复元素去除 {'a', 'y', 'd', 'k'} {'jaja', 'abc', 'kyda'}
2.总结列表,元组,字典,集合的联系与区别。参考以下几个方面:
- 列表:列表是用[]括起来的,是一种有序的数据结构,这种数据结构是可以变化的,里面的值也是可以变化的,存储的方式是[,,,],增加的方式有在后面增加也有在指定的位置进行插入,查找方式有按index的值进行查找。
- 元组:元组是用()括起来的,是一种有序的数据结构,这种数据结构是不可以变化的,即初始化后就不能再修改了但是例外的就是里面有列表是可以修改列表里面的值,存储方式是(,,,)。
- 字典:字典是用{}括起来的,是一种无序的数据结构,这种数据结构是可以变化的,里面的值键子是不可以重复的,存储方式是{‘key1’:‘value’,‘key2’:‘value’},查找的方式是同配对键子的值。
- 集合:集合特性:与字典类似,但只包含键,而没有对应的值,包含的数据不重复。
3.词频统计
-
1.下载一长篇小说,存成utf-8编码的文本文件 file
2.通过文件读取字符串 str
3.对文本进行预处理
4.分解提取单词 list
5.单词计数字典 set , dict
6.按词频排序 list.sort(key=lambda),turple
7.排除语法型词汇,代词、冠词、连词等无语义词
- 自定义停用词表
- 或用stops.txt
8.输出TOP(20)
- 9.可视化:词云
- 代码如下
-
# 读取文件 f = open("wz.txt","r") text = f.read() f.close() # 转为小写 text = text.lower() # 将所有其他做分隔符(,.?!)替换为空格 text = text.replace(","," ").replace("."," ").replace("?"," ").replace("!"," ") # 分割为单词 text = text.split() setText = set(text) exclude = {'a','the','and','i','you','in','but','not','with','by','its','for','of','an','to'} setText = setText-exclude # 转为字典 textDict = {} for word in setText: textDict[word] = text.count(word) # 转为列表 word = list(textDict.items()) word.sort(key = lambda x:x[1],reverse=True) print(word[:20]) # 生成excel import pandas as pd pd.DataFrame(data=word).to_csv('Harry Potter.csv',encoding='utf-8')
可视化如下
-