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

本次作业来源于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2753

1.列表,元组,字典,集合分别如何增删改查及遍历。

列表:

增加

list=['l','z','d','h','k']
list.append('aa')
print(list);

 ['l', 'z', 'd', 'h', 'k', 'aa']

删除

list=['l','z','d','h','k']
del list[3]#删除第四个元素
print(list);

 ['l', 'z', 'd', 'k']

修改

list=['l','z','d','h','k']
list[4] = 'b'  # 更改第五个元素
print(list);
['l', 'z', 'd', 'h', 'b']
查询
list=['l','z','d','h','k']
x=list.index('d') 
print(x);
2
遍历
list=['l','z','d','h','k']
for i in list: print(i)  
l 
z
d
h
k
元组:不能进行增加和修改删除元组中的元素。
list=('ll','wt')
print(list[0])

   ll

字典

增加:

 

e={'a':1,'b':2,'c':3}
e['d']='4';
print(e)

 

 {'a': 1, 'b': 2, 'c': 3, 'd': '4'}

删除:

e={'a':1,'b':2,'c':3}
del e['a'] 
print(e)

 {'b': 2, 'c': 3}

修改:

e={'a':1,'b':2,'c':3}
e['a']=4   
print(e)

 {'a': 4, 'b': 2, 'c': 3}

遍历:

e={'a':1,'b':2,'c':3}
for key in e:print(key)

 a
 b
 c

集合(不能查找和修改指定元素)

l=set('z')
l.add('p')  #增加元素
print(l)

 {'p', 'z'}

2.总结列表,元组,字典,集合的联系与区别。参考以下几个方面:

  • 括号
  • 有序无序
  • 可变不可变
  • 重复不可重复
  • 存储与查找方式

 列表:列表是一组有序项目的数字结构,列表的项目应该放在方括号[ ]中,列表是可以被改变和可重复的;按照索引的方式查找通过偏移存储并且元素可以任意类型存在。

 元组:元组与列表十分相似,可重复也是通过偏移的方式进行存储,不过元组是不可变的即是你是不能对元组中的元素进行修改,而且用的是();元组的元素是固定的长度、异构,也是任意嵌套。

 字典:字典使用的是{},字典是无序的,但是可变可重复;使用键-值进行存储,查找速度快;字典的key是不能变的,list不能作为key,字符串、元祖、整数等都可以。

 集合:无序不可变,使用([ ]),与字典类似,但只包含键,而没有对应的值;元素可以是列表、元组、字典中的任意一个或多个。

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.可视化:词云

 排序好的单词列表word保存成csv文件

import pandas as pd
pd.DataFrame(data=word).to_csv('big.csv',encoding='utf-8')
线上工具生成词云:
https://wordart.com/create
# -*- coding=utf-8 -*-
exclude={'a','the','and','i','you','in','but','not','with','by','its','for','of','an','to','is','was','that','he','this','are','it','be','as','at','on','if','has','have','so','or'}  #定义数组#
def gettxt():
    sep=".,:;?!-_'"
    txt=open(r'F:\ll.txt','r',encoding='UTF-8').read().lower()
    for ch in sep :
        txt=txt.replace(ch,' ')
    return txt
#分解提取单词#
bigList=gettxt().split()
print(bigList);
print('big:',bigList.count('big'))
bigSet=set(bigList)
#过滤单词,包括一些冠词和连词等#
bigSet=bigSet-exclude
print(bigSet)
#单词计数#
bigDict={}
for word in bigSet:
    bigDict[word]=bigList.count(word)
print(bigDict)
 
print(bigDict.items())
word=list(bigDict.items())
#按词频排序#
word.sort(key=lambda x:x[1],reverse=True)
print(word)
#输出频率较高的词语top20#
for i in range(20):
    print(word[i])

 

 

posted @ 2019-03-25 09:56  梁琳  阅读(107)  评论(0编辑  收藏  举报