Python程序设计基础-Chap08-字典.ppt

上传人(卖家):三亚风情 文档编号:3371939 上传时间:2022-08-24 格式:PPT 页数:35 大小:836.50KB
下载 相关 举报
Python程序设计基础-Chap08-字典.ppt_第1页
第1页 / 共35页
Python程序设计基础-Chap08-字典.ppt_第2页
第2页 / 共35页
Python程序设计基础-Chap08-字典.ppt_第3页
第3页 / 共35页
Python程序设计基础-Chap08-字典.ppt_第4页
第4页 / 共35页
Python程序设计基础-Chap08-字典.ppt_第5页
第5页 / 共35页
点击查看更多>>
资源描述

1、内容提纲内容提纲8.1 什么是字典2 28.2 字典的创建和使用3 38.3 字典的基本操作4 43 35 58.4 字典的格式化字符串1 18.5 字典的实例应用引例v引例 假设有一种表格,第一列表示学号,第二列表示学号所对应的学生姓名,它们的关系一一对应 现在想查找学号是20170001的学生,我们从表中对应的第二列,就能很方便地知道该学生的姓名是“张三”,如右表:20170001张三20170002李四20170003王五20170004赵六8.1 什么是字典什么是字典v 字典是Python语言中唯一的映射类型。映射类型对象里哈希值和指向的对象,通常被认为是可变的哈希表。字典对象是可变的

2、,它是一个容器类型,能存储任意个数的Python对象,其中也可包括其他容器类型。v 字典是Python中最强大的数据类型之一,它与列表、元组等其他序列类型的主要区别有以下几点。v(1)存取和访问数据的方式不同。v(2)映射类型中的数据是无序排列的。这和序列类型是不一样的,序列类型是以数值序排列的。v(3)映射类型用键直接“映射”到值。v(4)字典支持索引操作(索引值为键值),但不支持切片操作,因为切片操作是针对索引值具有连续性,而字典的键不具备连续性。v(5)字典中的键必须不可变且不重复,值可以是任何类型。8.2 字典的创建和使用字典的创建和使用v 字典就是用花括号包裹的键值对的集合(键值对有

3、时也被称作项或元素)。在字典的创建过程中,要注意以下几点。v(1)键与值之间用冒号“:”分开;v(2)项与项之间用逗号“,”分开;v(3)字典中的键必须是唯一的,而值可以不唯一。8.2 字典的创建和使用字典的创建和使用v 8.2.1 直接创建字典v 创建一个空的字典:v mydict=#创建一个空的字典v mydict#输出此字典的内容v v 可知结果为空的。v 创建一个与引例相对应的字典:v student=20170001:张三,20170002:李四,/v 20170003:王五,20170004:赵六,8.2 字典的创建和使用字典的创建和使用v 8.2.2 通过dict函数创建字典v

4、dict函数是字典类的构造函数,也可以利用此函数来创建字典。v 创建一个空字典:v dict()v v 还可以传入键值对创建字典。v dict(a=1,b=2,c=3)v b:2,a:1,c:3v 可以传入映射函数创建字典。v dict(zip(a,b,1,2)v b:2,a:18.2 字典的创建和使用字典的创建和使用v 8.2.2 通过dict函数创建字典v dict函数是字典类的构造函数,也可以利用此函数来创建字典。v 创建一个空字典:v dict()v v 还可以传入键值对创建字典。v dict(a=1,b=2,c=3)v b:2,a:1,c:3v 可以传入映射函数创建字典。v dict

5、(zip(a,b,1,2)v b:2,a:18.2 字典的创建和使用字典的创建和使用v 还可以传入可迭代对象创建字典。v dict(a,1),(b,2)v b:2,a:1v 另外,也可以用dict函数,对字典进行如下操作:v mydict=b:2,a:1,c:3#定义一个字典mydictv a=dict(mydict)#将mydict作为dict函数的参数v print(a)#输出字典av b:2,a:1,c:3v 在创建完一个字典后,可以利用len函数来获取字典的长度,也就是获取该字典中键值对的个数。下面求字典mydict的长度。v len(mydict)v 3v 得到的结果为3,说明此字典

6、中包含了3个键值对。8.2 字典的创建和使用字典的创建和使用v 8.2.3 字典的修改和删除v 修改字典中已存在元素的值,操作如下:v dict=Name:huang,Age:20,Class:10v dictAge=30;#将键Age所对应的值改为30v dictv Class:10,Age:30,Name:huangv 在实际操作过程中,还可以向字典添加元素(必须同时添加键值对),方法如下:v dictSchool=GDPU;#增加新的元素v dictv Class:10,Age:30,Name:huang,School:GDPUv 可以看到,新增加的键值对School:GDPU已经成为字

7、典的一个元素。8.2 字典的创建和使用字典的创建和使用v 当要想删除字典中的其一个元素时,用del 多了一个空格就行,其用法为缺少标点符号v del dictName;#删除键是Name的元素v dictv Class:10,Age:30,School:GDPUv 从输出的结果可知,键为Name的元素已不在字典中了。还可以用dict.clear()来清空词典所有元素。v dict.clear()v dictv 格式错乱,跑到阴影框的外面了v 可知执行此操作后,字典为空。clear是一个原地操作的方法,使得dict中的内容全部被置空,里面所有的元素将被清除,成为一个空的字典。8.2 字典的创建和

8、使用字典的创建和使用v 8.2.3 字典的遍历v 字典是一种特殊的集合,因此可以循环操作对其进行遍历。一般来说,对字典的遍历有如下几种形式。v 为了便于讲述,可以先建立一个字典。v mydict=Name:huang,Age:20,Class:10v 建议把这段移动到开头位置,否则,把“如下几种形式”和后面的几种形式给断开了1遍历字典的key(键)v for i in mydict:v print(i)v 输出结果为:v Classv Agev Name8.2 字典的创建和使用字典的创建和使用v 2遍历字典的value(值)v for i in mydict.values():vprint(i

9、)v 结果为:v 10v 20v Huangv 可知,values()函数是对字典元素的值进行操作的,此程序中的变量i变量i是否要斜体?全书要统一一下对应字典中的每个元素的值。8.2 字典的创建和使用字典的创建和使用v 3遍历字典的项(元素)v for i in mydict.items():vprint(i)v 输出结果为字典的所有元素:v(Class,10)v(Age,20)v(Name,huang)v 此程序中的变量i对应字典中的元素(包括健和值)8.2 字典的创建和使用字典的创建和使用v 4遍历字典的key-valuev for i,j in mydict.items():vprint

10、(i,j)v 输出结果如下:v Class 10v Age 20v Name huangv 此程序中的变量i对应字典的键,变量j对应字典的值。8.3 字典的基本操作字典的基本操作v 8.3.1 get函数:访问字典成员v get()函数根据key获取值。v d=one:1,two:2,three:3v print(d.get(two)v 2v print(d.get(four)#字典d中没有four这个键v 输出结果为:v None8.3 字典的基本操作字典的基本操作v get函数可以访问字典中不存在的键,当该键不存在时返回None,读者可以参看前面所讲的用索引的方式来获取值,当键不存在时,系

11、统会报错,这是两种方法获取字典元素值的区别。建议大家在从字典取值时,多用get()函数。8.3 字典的基本操作字典的基本操作v 8.3.2 copy函数:返回一个具有相同键值的新字典v x=one:1,two:2,three:3,test:a,b,c#创建一个字典xv print(x)#输出字典xv one:1,two:2,test:a,b,c,three:3v y=x.copy()#用copy函数,将字典x复制到字典y中v print(y)#输出字典yv one:1,two:2,test:a,b,c,three:38.3 字典的基本操作字典的基本操作v 可以看到,用copy函数复制后,字典x

12、和字典y具有相同的元素(键值对),y是x的一个副本。再看下面的操作:v ythree=33#将字典y中键为 three的元素值改为33v print(y)v one:1,two:2,test:a,b,c,three:33v 从输出结果中,可以看到已经成功修改。此时,再来看看字典x的情况。v print(x)v one:1,two:2,test:a,b,c,three:3v 当修改副本字典y中的值时,不会对原字典x产生影响。下面再做如下操作:v ytest.remove(c)v yv one:1,two:2,test:a,b,three:3v xv one:1,two:2,test:a,b,th

13、ree:38.3 字典的基本操作字典的基本操作v 大家从输出结果可以看到,副本的操作影响到了原始字典。在复制的副本中对值进行替换后,对原来的字典不产生影响,但是如果修改了副本(如增、删操作),原始的字典也会被修改。deepcopy函数使用深复制,复制其包含所有的值,这个方法可以解决由于副本修改而使原始字典也变化的问题。v deepcopy函数在使用前要导入,语法如下:v from copy import deepcopyv z=deepcopy(x)#使用deepcopy函数深度复制,注意与copy函数的区别v xv one:1,two:2,test:a,b,c,three:3v zv one

14、:1,two:2,test:a,b,c,three:38.3 字典的基本操作字典的基本操作v 8.3.3 pop函数:删除字典中对应的键v pop函数可以删除字典中的键及其对应的值。v d=one:1,two:2,three:3v d.pop(two)#删除键 twov 2v print(d)v one:1,three:3v 运算结果显示键 two及其对应的值都从字典中删除了。8.3 字典的基本操作字典的基本操作v8.3.4 romkeys函数:用给定的键建立新的字典vfromkeys函数可以用给定的键建立新的字典,键默认对应的值为None。v d=dict.fromkeys(one,two,

15、three)v print(d)v输出:vone:None,two:None,three:Nonev可见,fromkeys函数用给定的键值 one,two,three,建立了一个新的字典,但是每个键所对应的值为None。8.3 字典的基本操作字典的基本操作v 8.3.5 setdefault函数:获取与给定键相关联的值v 类似于get方法,获取与给定键相关联的值,也可以在字典中不包含给定键的情况下设定相应的键值。v d=one:1,two:2,three:3v d.setdefault(four,4)v 4v print(d)v 运算结果:v four:4,one:1,two:2,three:

16、3 8.3 字典的基本操作字典的基本操作v 8.3.6 update函数:用一个字典更新另外一个字典v update函数可以用一个字典来更新另外一个字典。操作如下:v d=v one:123,v two:2,v three:3v v print(d)v one:123,two:2,three:38.3 字典的基本操作字典的基本操作v 8.3.7 关键字in的应用 v 在前面所学的章节中,我们已经对in关键字有了一定的认识,在字典中,可以用in关键字进行如下操作。v 创建一个字典d:v d=v one:123,v two:2,v three:3v 8.3 字典的基本操作字典的基本操作v 1用in

17、关键字检查 key 是否存在v one in d.keys()v Truev one是字典d中的一个键,所以返回Truev five in d.keys()v Falsev five 不是字典d的键,所以返回Falsev 2用in关键字检查 value 是否存在v 1 in d.values()v Truev 1是字典d中的一个值,所以返回Truev 5 in d.values()v Falsev 5不是字典d的值,所以返回False。8.4 字典的格式化字符串v 在前面的学习中,我们知道格式化字符串时,Python使用一个字符串作为模板。模板中有格式符,这些格式符为真实值预留位置,并说明真实

18、数值应该呈现的格式。Python可以用一个元组将多个值传递给模板,每个值对应一个格式符。v print(Im%s.Im%d years old%(huang,20)v 输出结果为:v Im huang.Im 20 years old8.3 字典的基本操作字典的基本操作v 还可以通过字典格式化字符串,Python中内置有对字符串进行格式化的操作%,在每个转换说明符中的%字符后面,加上键(要用圆括号括起来),后面再跟上其他说明元素。只要所有给出的键都能在字典中找到,就可以获得任意数量的转换说明符。v temple=Im%(name)s,Im%(age)d.%(name)s is a student

19、,he is%(age)dv student=name:huang,age:20v print(temple%student)v 输出结果为:v Im huang,Im 20.huang is a student,he is 208.5 字典的排序v 8.5 字典的排序v Python中的字典反映的是一种映射关系,它在存储过程中是无序的,所以输出字典内容时也是无序的。在实际应用过程中,有时需要对字典进行一定程度的排序。Python中字典的排序分为按“键”排序和按“值”排序。下面分别进行讲述。v 这里创建一个字典d:v d=ok:1,no:2,huang:12,gg:11,hh:13v prin

20、t(d)v no:2,gg:11,huang:12,hh:13,ok:1 v 从输出结果可看到,字典的输出是没有顺序的。8.5 字典的排序v 8.5.1 sorted函数按key值对字典排序v 现在,要对字典d按键进行排序,前提是,d的键是可排序的,我们查看字典d的键,都是字符串类型,因此是可以进行排序的。执行以下操作:v sorted(d.keys()v gg,hh,huang,no,okv 可知得到的是一个由字典所有键组成的一个列表序列。并没有反映出字典的映射关系。v 再执行以下程序:v sorted(d.items()v(gg,11),(hh,13),(huang,12),(no,2),

21、(ok,1)8.5 字典的排序v 8.5.2 sorted函数按value值对字典排序v 对字典中的value进行排序,前提是value的类型是可排序的。对字典的value排序需要用到key参数,如果要对字典d按值的降序排列,进行如下操作:v sorted(d.items(),key=lambda e:e1,reverse=True)v(hh,13),(huang,12),(gg,11),(no,2),(ok,1)v 这里的d.items()实际上是将d转换为可迭代对象,迭代对象的元素为(hh,13),(huang,12),(gg,11),(no,2),(ok,1),items()方法将字典的

22、元素转化为了元组,而这里key参数对应的lambda表达式:lambda e:e1 的意思则是选取元组中的第二个元素作为比较参数,所以采用这种方法可以对字典的value进行排序。注意排序后的返回值是一个列表,而原字典中的键值对被转换为了list中的元组。8.5 字典的排序v 8.5.2 sorted函数按value值对字典排序v 对字典中的value进行排序,前提是value的类型是可排序的。对字典的value排序需要用到key参数,如果要对字典d按值的降序排列,进行如下操作:v sorted(d.items(),key=lambda e:e1,reverse=True)v(hh,13),(h

23、uang,12),(gg,11),(no,2),(ok,1)v 这里的d.items()实际上是将d转换为可迭代对象,迭代对象的元素为(hh,13),(huang,12),(gg,11),(no,2),(ok,1),items()方法将字典的元素转化为了元组,而这里key参数对应的lambda表达式:lambda e:e1 的意思则是选取元组中的第二个元素作为比较参数,所以采用这种方法可以对字典的value进行排序。注意排序后的返回值是一个列表,而原字典中的键值对被转换为了list中的元组。8.6 字典的实例应用v【例8-1】读取一个英文文档,实现以下功能。v(1)输出文档中出现的所有字母,并

24、统计每个字母出现的次数。v(2)输出文档中所有的单词,并找到出现频率最高的十个单词。(程序设计过程中,忽略字母的大小写)v 分析:v(1)读取文件,用到open函数,假设现在在Python的安装目录下有英文文档,文件名为englishText.txtv(2)文件成功读取之后,要完成各英文字母的统计,我们知道,英文字母一共是26个,有以下方案可以实现。v 生成26个变量,每个变量对应一个字母,当读取过程中,出现某个字母时,其对应的变量增加1。这种设计可以完成对字母的统计,但过程比较烦琐,大家可自行完成。v 生成一个具有26个元素的列表,将每个字母转化为相应的索引值,比如a-0,b-1,c-2z-

25、25,当出现某个字母时,其索引对应的值加1,这样也可以完成对字母的统计。8.6 字典的实例应用v 建立一个tf.py文件,程序代码如下:v 1.testFile=open(englishText.txt,r)#读取文件v 2.zi=testFile.read()#read()函数是以单个字符的方式来返回v 3.lis=0*26#新建一个有26个元素的列表v 4.for i in zi:v 5.if i.isalpha():#判断读取的字符是否为字母v 6.x=i.lower()#将读取的字母转化为小写v 7.lisord(x)-97+=1#将列表的索引值与字母的ASCII码对应起来v 8.print(lis)v 9.testFile.close()v 输出结果为:v 47,18,14,18,69,12,13,22,23,1,7,29,15,38,59,9,1,26,46,31,14,4,9,0,14,0v 从结果可以知道,字母a出现了47次,字母b出现了18次,.,字母z出现了0次。本 章 小 结v本章主要对Python中的字典进行了详细的介绍,字典是Python中最强大的数据类型之一,本章讲解了什么是字典、创建字典和为字典赋值、字典的基本操作、映射类型操作符、映射相关的函数、字典的方法等内容;并通过应用举例,深化字典的应用。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(Python程序设计基础-Chap08-字典.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|