第8次线下授课课件(字典)_第1页
第8次线下授课课件(字典)_第2页
第8次线下授课课件(字典)_第3页
第8次线下授课课件(字典)_第4页
第8次线下授课课件(字典)_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

集合与字典

集合类型

集合类型与数学中集合的概念一致,即包含0个或多个数据项的无序组合。集合中元素不可重复,元素类型只能是固定数据类型,例如:整数、浮点数、字符串、元组等,列表、字典和集合类型本身都是可变数据类型,不能作为集合的元素出现。集合类型

由于集合是无序组合,它没有索引和位置的概念,不能分片,集合中元素可以动态增加或删除。集合用大括号({})表示,可以用赋值语句生成一个集合。>>>S={425,"BIT",(10,"CS"),424}>>>S{424,425,(10,'CS'),'BIT'}>>>T={425,"BIT",(10,"CS"),424,425,"BIT"}>>>T{424,425,(10,'CS'),'BIT'}集合类型

由于集合元素是无序的,集合的打印效果与定义顺序可以不一致。由于集合元素独一无二,使用集合类型能够过滤掉重复元素。set(x)函数可以用于生成集合。>>>W=set(‘apple’){'e','p','a','l'}>>>V=set(("cat","dog","tiger","human")){'cat','human','dog','tiger'}集合类型集合类型的操作符操作符描述S–T或

S.difference(T)返回一个新集合,包括在集合S中但不在集合T中的元素S&T或S.intersection(T)返回一个新集合,包括同时在集合S和T中的元素S^T或s.symmetric_difference(T)返回一个新集合,包括集合S和T中元素,但不包括同时在其中的元素S|T或S.union(T)返回一个新集合,包括集合S和T中所有元素S<=T或S.issubset(T)如果S与T相同或S是T的子集,返回True,否则返回False,可以用S<T判断S是否是T的真子集S>=T或S.issuperset(T)如果S与T相同或S是T的超集,返回True,否则返回False,可以用S>T判断S是否是T的真超集集合类型

集合类型的4种基本操作,交集(&)、并集(|)、差集(-)、补集(^),操作逻辑与数学定义相同集合类型集合类型的操作函数或方法函数或方法描述S.add(x)如果数据项x不在集合S中,将x增加到sS.clear()移除S中所有数据项S.copy()返回集合S的一个拷贝S.pop()随机返回集合S中的一个元素,如果S为空,产生KeyError异常S.discard(x)如果x在集合S中,移除该元素;如果x不在,不报错S.remove(x)如果x在集合S中,移除该元素;不在产生KeyError异常S.isdisjoint(T)如果集合S与T没有相同元素,返回Truelen(S)返回集合S元素个数xinS如果x是S的元素,返回True,否则返回FalsexnotinS如果x不是S的元素,返回True,否则返回False集合类型集合类型主要用于三个场景:成员关系测试、元素去重和删除数据项,例子如下。>>>"BIT"in{"PYTHON","BIT",123,"GOOD"}#成员关系测试True>>>tup=("PYTHON","BIT",123,"GOOD",123)#元素去重>>>set(tup){123,'GOOD','BIT','PYTHON'}>>>newtup=tuple(set(tup)–{'PYTHON'})#去重同时删除数据项('GOOD',123,'BIT')

集合类型与其他类型最大的不同在于它不包含重复元素,因此,当需要对一维数据进行去重或进行数据重复处理时,一般通过集合来完成。字典类型字典类型

通过任意键信息查找一组数据中值信息的过程叫映射,Python语言中通过字典实现映射。Python语言中的字典可以通过大括号({})建立,建立模式如下:{<键1>:<值1>,<键2>:<值2>,…,<键n>:<值n>}其中,键和值通过冒号连接,不同键值对通过逗号隔开。字典类型>>>Dcountry={"中国":"北京","美国":"华盛顿","法国":"巴黎"}>>>print(Dcountry){'中国':'北京','法国':'巴黎','美国':'华盛顿'}

字典打印出来的顺序与创建之初的顺序不同,这不是错误。字典是集合类型的延续,各个元素并没有顺序之分。

直接使用大括号({})可以创建一个空的字典。字典的索引

字典最主要的用法是查找与特定键相对应的值,这通过索引符号来实现。

格式:<字典变量>[<键>]>>>Dcountry["中国"]'北京'字典中对某个键值的修改可以通过中括号的访问和赋值实现:>>>Dcountry["中国"]='大北京'>>>print(Dcountry){'中国':'大北京','法国':'巴黎','美国':'华盛顿'}字典类型的操作通过中括号可以增加新的元素

>>>Dcountry={"中国":"北京","美国":"华盛顿","法国":"巴黎"}>>>Dcountry["英国"]="伦敦">>>print(Dcountry){'中国':'北京','法国':'巴黎','美国':'华盛顿','英国':'伦敦'}字典类型的操作函数和方法描述<d>.keys()返回所有的键信息<d>.values()返回所有的值信息<d>.items()返回所有的键值对<d>.get(<key>,<default>)键存在则返回相应值,否则返回默认值<d>.pop(<key>,<default>)键存在则返回相应值,同时删除键值对,否则返回默认值<d>.popitem()随机从字典中取出一个键值对,以元组(key,value)形式返回<d>.clear()删除所有的键值对del<d>[<key>]删除字典中某一个键值对<key>in<d>如果键在字典中返回True,否则返回False字典类型的操作>>>Dcountry={"中国":"北京","美国":"华盛顿","法国":"巴黎"}>>>Dcountry.keys()dict_keys(['中国','美国','法国'])>>>list(Dcountry.values())['北京','华盛顿','巴黎']>>>Dcountry.items()dict_items([('中国','北京'),('美国','华盛顿'),('法国','巴黎')])>>>'中国'inDcountry#只对键进行判断True>>>Dcountry.get('美国','悉尼')#'美国'在字典中存在'华盛顿'>>>Dcountry.get('澳大利亚','悉尼')#'澳大利亚'在字典中不存在'悉尼'字典的遍历

与其他组合类型一样,字典可以通过for…in语句对其元素进行遍历,基本语法结构如下:for <变量名>in<字典名>:

语句块>>>forkeyinDcountry:print(key)中国美国法国遍历字典的键语法结构如下:for<变量名>in<字典名.keys()>:<语句块>从字典中依次取键的信息到变量名中>>>d={'Tom':95,'Jerry':87,'Lucy':64}>>>forkind.keys(): print(k)

TomJerryLucy遍历字典的值语法结构如下:for<变量名>in<字典名.values()>:

<语句块>从字典中依次取值的信息到变量名中>>>d={'Tom':95,'Jerry':87,'Lucy':64}>>>forvind.values(): print(v)

958764遍历字典的键值对语法结构如下:从字典中依次取键值对的信息到变量名中>>>d={'Tom':95,'Jerry':87,'Lucy':64}>>>foriind.items(): print(i)

('Tom',95)('Jerry',87)('Lucy',64)for<变量名>in<字典名.items()>:<语句块>中文词频统计(初级)CCBY-NC-SA4.0嵩天《固定词的词频统计》案例背景:2022年10月1日《求是》杂志刊文《新时代中国共产党的历史使命》※这是习近平总书记2017年10月18日在中国共产党第十九次全国代表大会上的报告《决胜全面建成小康社会,夺取新时代中国特色社会主义伟大胜利》的一部分。需求:统计“中国”、“人民”、“社会主义”、“中华民族”、“复兴”出现的次数。《固定词的词频统计》代码======各词出现的次数如下:中国30人民27社会主义15中华民族13复兴11>>>《固定词的词频统计》结果英文词频统计英文词频统计第一步:整理并分离、提取英文文章的单词第二步:用字典对单词进行计数第三步:根据单词的频次,从高到低排序第四步:输出频次最高的前10条记录统计《飞鸟集》英文词频,并输出词频最高的前10条记录英文词频统计s=open("d:\\birds.txt","r").read()s=s.lower()forchin'''?,*.'"!''':s=s.replace(ch,“”)#将标点符号替换为空格ls=s.split()#提取单词并分解成单词列表第一步:整理并分离、提取英文文章的单词英文词频统计d={}#字典初始为空,记录“单词:词频”forwordinls:#遍历单词列表

ifwordind:d[word]+=1#旧单词,词频加1;

else:d[word]=1#新单词,以“单词:1”方式添加到字典中第二步:遍历单词列表,用字典对单词进行计数英文词频统计d={}#字典初始为空,记录“单词:词频”forwordinls:#遍历单词列表

d[word]=d.get(word,0)+1#统计词频到列表中第二步:字典计数改进英文词频统计lt=list(d.items())#将记录词频的字典,转换为列表类型第三步:根据单词的频次,从高到低排序由于字典类型没有顺序,需要将其转换为有顺序的列表类型。英文词频统计lambda匿名函数,此处用作sort()方法的参数,表示依据元组元素的第2数据项,即频次进行降序排列。

lt.sort(key=lambdax:x[1],reverse=True)第三步:根据单词的频次,从高到低排序使用sort()方法和lambda函数配合,根据单词频次对列表元素降序排列。英文词频统计foriinrange(10):#遍历单词列表前10项

print(“{0:<10}{1:>5}”.format(lt[i][0],lt[i][1]))#输出单词、频次第四步:输出频次最高的前10条记录英文词频统计s=open("d:\\birds.txt","r").read()s=s.lower()forchin'''?,*.'"!''':s=s.replace(ch,"")#将特殊字符替换为空格ls=s.split()#提取单词并分解成单词列表d={}#字典初始为空,记录单词及词频forwordinls:#遍历单词列表

d[word]=d.get(word,0)+1#若单词在字典中已出现,计数加1;若尚未出现,次数计1lt=list(d.items())#将记录词频的字典,转换为列表类型lt.sort(key=lambdax:x[1],reverse=True)#对单词列表按照词频进行降序排列foriinrange(10):#遍历单词列表前10项

print(“{0:<10}{1:>5}”.format(lt[i][0],lt[i][1]))#输出单词、频次123456789101112Python英文词频统计总结:注意数据形态的变化字符串单词列表字典计数元组列表排序输出……字符串s=“TomLucyJerryLucyTomLucyJack”单词列表ls=[‘Tom’,’Lucy’,’Jerry’,’Lucy’,’Tom’,’Lucy’,’Jack’]字典计数d={‘Tom’:2,’Lucy’:3,’Jerry’:1,’Jack’:1}元组列表lt=[(‘Tom’,2),(‘Lucy’,3),(‘Jerry’,1),(‘Jack’,1)]降序排列lt=[(‘Lucy’,3),(‘Tom’,2),(‘Jerry’,1),(‘Jack,1)]英文词频统计(教材案例解析)《Hamlet》词频统计实例代码10.1e10.1CalHamlet.py

1234567891011121314151617

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论