复合数据类型,英文词频统计

此次作业的要求来自于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:pyhomeworkigbigword.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')

  

原文地址:https://www.cnblogs.com/zl1216/p/10533482.html