复合数据类型,英文词频统计
作业要求来自于 https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2753
1.列表,元组,字典,集合分别如何增删改查及遍历。
- 列表
1.增加
list.append(obj)
增加元素到末尾
LOL = ['疾风剑豪', '盲僧'] LOL.append('光辉女郎') print(LOL)
list.insert(index, obj)
增加元素到指定位置
LOL = ['疾风剑豪', '盲僧'] LOL.insert(1, '诺克萨斯之手') print(LOL)
list.extend(list2)
将list2列表中的元素增加到list中
LOL = ['疾风剑豪', '盲僧'] YXLM=['EZ', '塞拉斯'] LOL.extend(YXLM) print(LOL)
2.删除
list.pop(index)
删除指定位置的元素
LOL = ['吉格斯', '泽拉斯', '杰斯'] LOL.pop() print(LOL)
list.pop()
删除最后一个元素
LOL = ['吉格斯', '泽拉斯', '杰斯'] LOL.pop(1) print(LOL)
3.改
LOL = ['吉格斯', '泽拉斯', '杰斯'] LOL[2]='金克斯' print(LOL)
4.查找
通过切片方式取值
LOL = ['吉格斯', '泽拉斯', '杰斯', '塞拉斯'] print(LOL[0:2])
取下标后面所有的值
LOL = ['吉格斯', '泽拉斯', '杰斯', '塞拉斯'] print(LOL[1:])
取下标前面所有的值
LOL = ['吉格斯', '泽拉斯', '杰斯', '塞拉斯'] print(LOL[:3])
取所有的值
LOL = ['吉格斯', '泽拉斯', '杰斯', '塞拉斯'] print(LOL[:])
按位置取值
LOL = ['吉格斯', '泽拉斯', '杰斯', '塞拉斯'] print(LOL[0])
5.遍历
list=['迪丽热巴','古力娜扎','马尔扎哈'] for l in list: print(l)
- 元组
- 另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改
- 增加
tuple1=('维恩', '大嘴', '奎因') tuple2=('璐璐', '奶妈', '风女') tuple=tuple1+tuple2 print(tuple)
- 删除
tuple1=('维恩', '大嘴', '奎因') print(tuple1) del tuple1 print(tuple1)
- 改
tuple1=('维恩', '大嘴', '奎因') tuple1=list(tuple1) tuple1[2]='卢锡安' print(tuple1)
- 查找
通过下标索引,从0开始
tuple1=('维恩', '大嘴', '奎因') print(tuple1[1])
切片,顾头不顾尾
tuple1=('维恩', '大嘴', '奎因') print(tuple1[:2])
5.遍历
tuple=('迪丽热巴','古力娜扎','马尔扎哈') for t in tuple: print(t)
- 字典
1.增加
dict={'盲僧':6300,'寒冰':450} dict["疾风剑豪"]=100
print(dict)
2.删除
dict={'盲僧':6300,'寒冰':450} del dict['寒冰'] print(dict)
dict={'盲僧':6300,'寒冰':450} dict.pop('寒冰') print(dict)
3.改
dict={'盲僧':6300,'寒冰':450} dict["寒冰"]=3150 print(dict)
4.查找
通过key访问value值
dict={'盲僧':6300,'寒冰':450} print(dict['寒冰'])
以列表返回可遍历的(键, 值) 元组数组
dict={'盲僧':6300,'寒冰':450} print(dict.items())
5.遍历
dict={'陈泽诚'':21','迪丽热巴'':27'} for d in dict: print(d)
- 集合
- 增加
s=set(['疾风剑豪','盲僧']) s.add('诺克萨斯之手') print(s)
- 删除
s=set(['疾风剑豪','盲僧']) s.remove('盲僧') print(s)
- 改
s=set(['疾风剑豪', '盲僧']) s=list(s) s[1]= '皇子' s=set(s) print(s)
- 遍历
s=set(['疾风剑豪', '盲僧']) for x in s: print(x)
2.总结列表,元组,字典,集合的联系与区别。参考以下几个方面:
(1)列表
- 列表list,用中括号“[ ]”表示
- 列表是一组任意类型的值,按照一定顺序组合而成的
- 可以随时添加删除修改其中的元素
- 元素可重复
- 存储时每一个元素被标识一个索引,每当引用时,会将这个引用指向一个对象,所以程序只需处理对象的操作
(2)元组
- 元组tuple,用小括号“( )”表示
- 与列表相同,有序
- 一旦初始化就不能修改
- 元素可重复
- 与列表相似,元组是对象引用的数组
(3)字典
- 字典dict,用大括号“{key,value}”表示
- 字典中的项没有特定顺序,以“键”为象征
- 因为是无序,故不能进行序列操作,但可以在远处修改,通过键映射到值
- key不能重复
- 字典存储的是对象引用,不是拷贝,和列表一样
(4)集合
- 集合set,用小括号“( )”表示
- 无序
- 可变,可以添加和删除元素
- 无重复
- 与列表相似
3.词频统计
import pandas as pd file = open('cipher.txt', 'r', encoding='utf8') # 排除词汇列表 exclude = {'a','an','and','was','as','up','my','it','here','at','ll','his','s','he','that','from','had','have','we','the','i','you','in','on','but','with','not','by','its','for','of','to'} # 对文本预处理 def getfile(): sep = "'?', '?', '!'," '", "'", ' "', '"',':',':','.',',', ',', '.', '。','“','”',','" text =file.read().lower() for ii in sep: text = text.replace(ii, ' ') return text #提取单词,单词计数词典 fileList = getfile().split() fileDict = set(fileList) exclude1 = set(exclude) fileDict = fileDict-exclude1 # 统计单词数量 countDict = {} for word in fileDict: countDict[word] = fileList.count(word) print(countDict.items()) word = list(countDict.items()) # 排序单词数量 word.sort(key=lambda x: x[1], reverse=True) print(word) # 输出TOP20 for i in range(20): print(word[i]) pd.DataFrame(data=word).to_csv('yyy.csv', encoding='utf-8')
-
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.可视化:词云
排序好的单词列表word保存成csv文件
import pandas as pd
pd.DataFrame(data=word).to_csv('big.csv',encoding='utf-8')
线上工具生成词云:
https://wordart.com/create