复合数据类型,英文词频统计
此次作业的要求来自于https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2696
1.列表,元组,字典,集合分别如何增删改查及遍历。
列表:
list=['30','50'] list.append( '20' ) del list[1] list[1]='10' list.insert(2,'10') list.index('20') list.index['50'] list.count('30') list.copy() for i in list: printf(list[i])
元组:
tu = (1, 2, 3, 'alex', [2, 3, 4, 'taibai'], 'egon') print(tu[2]) print(tu[0:4]) for i in tu: print(i) tu[4].append('ss') print(tu) del tu;
字典:
d['a']=11 del d['a'] a=d['a'] d.clear() str(d) for key in d:printf(d[key])
集合:
test = {'Alice', 'Beth', 'Cecil', 'Cady', 'Bob', 'Molly'}; test.add('Youth'); print(test); test.update({123, 456}); print(test); basket = {'orange', 'banana', 'pear', 'apple'}; test.remove('Alice'); print(test); test.discard('Beth'); print(test); x = basket.pop(); print("删除的元素是:", x); print(basket);
2.总结列表,元组,字典,集合的联系与区别。参考以下几个方面:
- 括号
- 有序无序
- 可变不可变
- 重复不可重复
- 存储与查找方式
列表(list):列表是一组有序项目的数字结构,列表的项目应该放在方括号[ ]中,列表是可以被改变和可重复的;按照索引的方式查找通过偏移存储并且元素可以任意类型存在。
元组(tuple):元组与列表十分相似,可重复也是通过偏移的方式进行存储,不过元组是不可变的即是你是不能对元组中的元素进行修改,而且用的是();元组的元素是固定的长度、异构,也是任意嵌套。
字典(dict):字典使用的是{},字典是无序的,但是可变可重复;使用键-值(key-value)进行存储,查找速度快;字典的key是不能变的,list不能作为key,字符串、元祖、整数等都可以。
集合(set):无序不可变,使用([ ]),与字典类似,但只包含键,而没有对应的值;元素可以是列表、元组、字典中的任意一个或多个。
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)
1 f = open(r'D:\pyhomework\bigbigword.txt',encoding='utf8') 2 #打开文件 3 stop={'a','the','and','i','you','in','but','not','with','by','its','for','of','an','to','my','myself','we','our','ours','ourelves','about','no','nor'} 4 def gettext(): 5 sep = "~`*()!<>?,./;'\:[]{}-=_+" 6 text = f.read().lower() 7 for s in sep: 8 text=text.replace(s,'') 9 return text 10 #读取文件 11 textList = gettext().split() 12 print(textList) 13 #分解提取单词 14 textSet = set(textList) 15 stop = set(stop) 16 textSet = textSet - stop 17 print(textSet) 18 #排除语法词 19 textDict = {} 20 for word in textSet: 21 textDict[word] = textList.count(word) 22 print(textDict) 23 print(textDict.items()) 24 word = list(textDict.items()) 25 #单词计数 26 word.sort(key=lambda x:x[1],reverse=True) 27 print(word) 28 #排序 29 for q in range(20): 30 print(word[q]) 31 #次数为前20的单词 32 33 import pandas as pd 34 pd.DataFrame(data=word).to_csv("text.csv",encoding='utf-8')