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

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

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

列表的增删改及遍历

#定义列表
list1=list('gzcc')
#列表的增加
list1.append('!')
list1.extend('yes')
#列表的删除
list1.pop(4)
#列表的修改
list1[0] = '1'  #将第0个元素修改为’1‘
#列表的查找
list1.index('1')
#列表的遍历
b=len(list1)
for i in range(b):
  print(i+1,list1[i])#前面为序列号,后面为值

元组 ,操作和列表类似,但是元组不能修改

#创建
tuple1 = ()
tuple1 = 1,
tuple1 = 1,2,3
tuple1 = tuple([1,2,3,4]) 
tuple1

字典的增删改及遍历

字典
#创建
dict1 = {
    'key':'value',
    'key1':'value1'
}
a = [('key1','value1'),('key2','value2')]
dict1 = dict(a)
dict1 = {}.fromkeys(['key1','key2'],'default_value') #从键值创建dict
dict1 = dict(key1='value1',key2='value2')
 
#增加
dict1['key3']='value3' #字典可以自动添加
dict1.setdefault('key5','N/A') #如果不存在,就设置默认值
 
#删除
del dict1['key3']
print dict1.pop('key2')  #popitem随机删除 和列表的pop一样
#dict1.clear()  #深删除,即使有拷贝 也会被删除
 
#修改
if 'key1' in dict1:
    dict1['key1']='new_value_1'
#查找
if 'key1' in dict1:
    print dict1['key1']
if dict1.has_key('key1'):
    print dict1['key1']
print dict1.get('key3','not exists') #宽松访问
print dict1.keys(),dict1.values()
 
#拼接
dict2 = dict(key4 = 'value4') #从字典更新另一个字典
dict1.update(dict2)

集合增删改查及遍历

A={'a','b','c','d','f','f'}
B=set(A)#B为集合且B经过了去重
set(B).add('e')##添加元素
set(B).update('h')#添加元素
setA.pop()  #删除操作,无返回值
print([v for v in setA])  #遍历
print(sorted(setA))  #set的排序

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

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

字典无序,集合不可重复

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
fn=open("xiaoshuo.txt","r+")
print("成功读取文件")
str=fn.read()
#去标点符号
s=',.?:;'
for c in s:
  text = str.replace(c,'')

#转化为小写
text=text.lower()

#分割并显示
atext=text.split()
# print(atext)
atext=list(atext)
# list1=[]
# list1=atext
#统计词频
print("计算单词出现的次数并按词频排序:")
# # strSet=set(text)
# for word in atext:
#    print(word,text.count(word))
fn1=open("stop.txt","r")
tyc=fn1.read()
tyc=list(tyc)

#用字典表示词频
res = {}
for i in atext:
    if i in res:
        res[i] = res[i] + 1
    else:
        res[i] = 1
# print(res)
#按照字典的value进行排序
res1 = sorted(res.items(), key=lambda d:d[1],reverse = True)
print(res1)

作业博客要求:

  • 文字作业要求言简意骇,用自己的话说明清楚。
  • 编码作业要求放上代码,加好注释,并附上运行结果截图。

原文地址:https://www.cnblogs.com/JunhanLin/p/10538606.html