书签 分享 收藏 举报 版权申诉 / 35
上传文档赚钱

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

  • 上传人(卖家):三亚风情
  • 文档编号:3371939
  • 上传时间:2022-08-24
  • 格式:PPT
  • 页数:35
  • 大小:836.50KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《Python程序设计基础-Chap08-字典.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    Python 程序设计 基础 Chap08 字典
    资源描述:

    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中最强大的数据类型之一,本章讲解了什么是字典、创建字典和为字典赋值、字典的基本操作、映射类型操作符、映射相关的函数、字典的方法等内容;并通过应用举例,深化字典的应用。

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:Python程序设计基础-Chap08-字典.ppt
    链接地址:https://www.163wenku.com/p-3371939.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


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

    163文库