版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
字典基本的操作方法制作:教材编写团队出版社:机械工业出版社《Python编程基础与应用》配套课件本课件为《Python编程基础与应用(第2版)》配套教学资源,由编写团队精心打造。为便于教学使用,团队同步提供了丰富的辅助材料,涵盖微课视频、教学课件、实训手册、习题答案、课程标准及程序源代码等。同时,教材配套超星教学示范包,支持一键克隆为网络在线课程,助力高效开展线上线下混合式教学。欢迎联系出版方订购使用。
书名:《Python编程基础与应用(第2版)》出版社:机械工业出版社主编:蓝永健、陈冬冬副主编:蔡德琛、朱海鑫、邓爱玲+contents目录字典的定义和赋值方法字典的12个操作方法汇总字典的增加方法字典的删除方法字典的查询方法字典的修改方法字典的定义和赋值方法01字典的定义字典(dictionary)与列表类似,但其中元素的顺序无关紧要,因为它们不是通过像0或1的索引访问的。取而代之,每个元素拥有与之对应的互不相同的键(key),需要通过键来访问元素。字典的每个键值key=>value对用冒号“:”分割,每个对之间用逗号“,”分割,整个字典包括在花括号“{}”中字典的定义字典的特征1)字典是任意数据类型的无序集合:列表、布尔型、整型、浮点型、元组、字符串等。2)字典是可变的,可以增加、删除或修改其中的键值对。3)字典中的“键”不允许重复,但是“值”允许重复。4)通过键而不是通过索引来读取元素。字典的特征字典定义的语法使用花括号{}定义示例1#空字典empty_dict={}#包含键值对的字典person={"name":"张三","age":25,"city":"北京"}print(person)#{'name':'张三','age':25,'city':'北京'}字典定义的语法使用dict()构造函数示例2#空字典empty_dict=dict()#使用关键字参数person=dict(name="李四",age=30,city="上海")#使用可迭代对象(列表/元组)coordinates=dict([("x",10),("y",20),("z",30)])print(person)#{'name':'李四','age':30,'city':'上海'}print(coordinates)#{'x':10,'y':20,'z':30}字典的创建和访问直接使用赋值运算符“=”将一个字典赋值给一个变量。它也可以通过一对花括号{}或者dict()创建字典。示例3school1=dict()#使用dict()定义一个空字典#以下是使用{}定义一个空字典,再通过key来直接进行赋值。school2={}school2['schoolName']='珠海一中'#第1个itemschool2['address']='珠海市香洲区##路##号'##第2个itemschool2['tel']='0756-123456'#第3个item#以下是在定义字典的同时也赋值,请注意age的值是数字12student3={'name':'王小红','age':12,'class':'网络191班’}#显示字典school2和school3的内容print(school2)print(student3)#以下是结果{'schoolName':'珠海一中','address':'珠海市香洲区##路##号','tel':'0756-123456'}{'name':'王小红','age':12,'class':'网络191班’}字典的赋值直接赋值(添加或修改键值对)示例4#创建空字典my_dict={}#添加新键值对my_dict["name"]="张三"my_dict["age"]=25print(my_dict)#{'name':'张三','age':25}#修改已存在的键的值my_dict["age"]=26print(my_dict)#{'name':'张三','age':26}字典的12个操作方法汇总02字典的12个操作方法汇总序号操作函数描述1d.keys()以列表返回一个字典所有的键2d.values()以列表返回一个字典所有的值3d.items()以列表返回可遍历的(键,值)元组数组4d.get(key,default)如果键存在则返回相应的值,如果键不存在则返回默认值default5d.pop(key,default)如果键存在则返回相应的值,同时还会删除“键值对”。如果键不存在则返回默认值default6d.popitem()从字典中删除最后一对“键值对”。同时还会以元组的形式返回删除的这个“键值对”的元素7d.update()利用字典或映射关系去更新另外一个字典。如果更新关系中不存在,同把新的“键值对”添加到字典中。即:“有”就更新旧元素,“没”就插入新元素。8d.copy()返回指定字典的副本,即复制一个字典。9d.clear()删除所有的“键值对”,清空字典。10d.get(key,default=None)返回指定键的值,如果值不在字典中返回default值11d.setdefault(key,default=None)和get()类似,但如果键不存在于字典中,将会添加键并将值设为default12d.__contains__(key)如果键在字典dict里返回true,否则返回false。请注意“__”是2个半角状态的下划线。字典的“增加”方法03字典的“增加”方法方法功能说明特点&适用场景直接赋值向字典添加单个键值对操作简单、使用频率最高;若键已存在,会覆盖原有值update()一次性批量添加多个键值对适合批量扩充数据;键重复时同样覆盖原有内容setdefault()安全添加单个键值对键不存在则新增,键已存在不会修改原有值,避免误覆盖copy()复制已有字典生成新字典属于复制创建新字典,可间接实现内容新增;新旧字典相互独立字典的“增加”方法直接赋值-最常用方法示例1#创建空字典my_dict={}#添加新键值对my_dict["name"]="张三"my_dict["age"]=25my_dict["city"]="北京"print(my_dict)#{'name':'张三','age':25,'city':'北京'}字典的“增加”方法update()方法-批量添加示例2person={"name":"李四"}#添加单个键值对person.update({"age":30})print(person)#{'name':'李四','age':30}#添加多个键值对person.update({"city":"上海","job":"工程师"})print(person)#{'name':'李四','age':30,'city':'上海','job':'工程师'}#使用关键字参数添加person.update(salary=5000,department="技术部")print(person)#{'name':'李四','age':30,'city':'上海','job':'工程师','salary':5000,'department':'技术部'}#使用元组列表添加person.update([("hobby","读书"),("gender","男")])print(person)字典的“增加”方法setdefault()方法-安全添加示例3person={"name":"王五"}#键不存在时添加新键值对person.setdefault("age",28)print(person)#{'name':'王五','age':28}#键存在时不作修改person.setdefault("name","赵六")#不会修改,因为"name"已存在print(person)#{'name':'王五','age':28}#添加嵌套结构person.setdefault("address",{})person["address"]["city"]="广州"print(person)#{'name':'王五','age':28,'address':{'city':'广州'}}字典的“增加”方法字典setdefault()访求和直接赋值实现元素的“增加”操作.当为指定“键”的字典进行赋值时,有两种含义:如果“键”存在,则表示修改对应的值;如果“键”不存在,则表示新添加一个元素操作示例4student={'name':'王小红','age':12,'class':'网络191班'}print('student状态前:',student)student['name']='陈小林'#修改元素student['sex']='男'#添加新元素print('student第1次修改后:',student)student.setdefault('name','匿名学生')#如果name没有值,则写入’匿名学生‘。如果有值,则不作处理student.setdefault('teacher','王老师')#如果teacher没有值,则写入’王老师‘print('student第2次修改后:',student)#以下是结果student状态前:{'name':'王小红','age':12,'class':'网络191班'}student第1次修改后:{'name':'陈小林','age':12,'class':'网络191班','sex':'男'}student第2次修改后:{'name':'陈小林','age':12,'class':'网络191班','sex':'男','teacher':'王老师'}字典的“增加”方法使用copy()的方法也可以实现“增加”字典的功能,或者说是浅表复制的功能,但是需要注意使用“=”和copy()方法有小小的区别。使用copy()之后,新的字典内存地址也发生了变化。示例5student={'name':'王小红','age':12,'class':'网络191班'}#使用copy()方法创建新字典(浅拷贝)goodStudent=student.copy()#直接赋值(引用同一个字典对象)goodStudent2=studentprint('student:',student)print('goodStudent:',goodStudent)print('goodStudent2:',goodStudent2)print('student的ID:',id(student))print('goodStudent的ID:',id(goodStudent))#ID已经变化,是新对象print('goodStudent2的ID:',id(goodStudent2))#ID与student相同,是同一对象#验证区别:修改原字典student['age']=13print('\n修改student后:')print('student:',student)print('goodStudent:',goodStudent)#不受影响,因为是拷贝print('goodStudent2:',goodStudent2)#随之改变,因为是同一对象字典的“增加”方法经过代码结果分析,以上两种方法都可以实现代码的复制功能,但是copy()可以实现浅表复制,它的内存地址也发生了变化。它的结果如下示例5student:{'name':'王小红','age':12,'class':'网络191班'}goodStudent:{'name':'王小红','age':12,'class':'网络191班'}goodStudent2:{'name':'王小红','age':12,'class':'网络191班'}student的ID:140000000000000goodStudent的ID:140000000000001goodStudent2的ID:140000000000000修改student后:student:{'name':'王小红','age':13,'class':'网络191班'}goodStudent:{'name':'王小红','age':12,'class':'网络191班'}goodStudent2:{'name':'王小红','age':13,'class':'网络191班'}字典的删除方法04字典的删除方法方法/语句功能说明核心特点pop()根据指定键删除对应键值对,并返回该键的值精准删除单个项;键不存在会报错popitem()随机删除一组键值对,并返回删除内容无需指定键,批量随机删项del语句可删除指定键值对,也能直接删除整个字典功能灵活,既删单项也可销毁整个字典clear()清空字典内所有键值对仅清空内容,保留空字典本体pop()方法示例1my_dict={'a':1,'b':2,'c':3}#删除并返回指定键的值value=my_dict.pop('b')print(value)#2print(my_dict)#{'a':1,'c':3}#提供默认值,避免KeyErrorvalue=my_dict.pop('d','键不存在')print(value)#'键不存在'popitem()方法示例2my_dict={'a':1,'b':2,'c':3}#删除并返回最后一个键值对(Python3.7+保证顺序)key,value=my_dict.popitem()print(key,value)#'c'3print(my_dict)#{'a':1,'b':2}popitem()方法和pop()方法使用popitem()方法可以实现删除指定的元素,同时删除的元素还可以返回为元组。使用pop()可以指定删除哪一个键的元素,同时返回元素的值。使用del全局删除方法,它能删某单一的元素也能清空字典。综合例子student={'name':'王小红','age':12,'class':'网络191班'}student2=student.copy()#浅表复制一个新的字典student2print('student删除前:',student)v1=student.popitem()#删除最后一个,同时把删除结果返回为元组v2=student.pop('age')#指定删除age,同时返回元素的值print('student删除后:',student)print('popitem()删除的:',v1)print('pop()删除的:',v2)delstudent2['name']#指定删除某一个键print('student2删除name后:',student2)delstudent2#全部删除,字典student2对象都没有了popitem()方法和pop()方法经分析,可知popitem()和pop()在实现删除的同时,还可以返回删除的元素。它的结果如下:综合例子student删除前:{'name':'王小红','age':12,'class':'网络191班'}student删除后:{'name':'王小红'}popitem()删除的:('class','网络191班')pop()删除的:12student2删除name后:{'age':12,'class':'网络191班'}del语句示例3my_dict={'a':1,'b':2,'c':3}#删除指定键delmy_dict['a']print(my_dict)#{'b':2,'c':3}#删除整个字典delmy_dict#print(my_dict)#会报错,字典已不存在clear()方法示例4my_dict={'a':1,'b':2,'c':3}#清空字典所有元素my_dict.clear()print(my_dict)#{}字典的查询方法05方法功能说明核心特点直接键访问通过键获取对应的值写法简洁;键不存在会直接报错get()根据键查询值键不存在返回默认值(None),不会报错,日常查询首选setdefault()查询键对应值,键不存在则新增键值对兼具查询+新增功能,查询时不会报错keys()获取字典中所有键只提取键集合,可遍历查看全部键values()获取字典中所有值只提取值集合,可遍历查看全部值items()获取全部键值对同时提取键和值,常用于遍历整个字典直接使用键访问示例1my_dict={'name':'Alice','age':25,'city':'Beijing'}#直接访问print(my_dict['name'])#Alice#如果键不存在会报KeyError#print(my_dict['job'])#KeyError:'job'get()方法(推荐)示例2my_dict={'name':'Alice','age':25,'city':'Beijing'}#基本用法print(my_dict.get('name'))#Aliceprint(my_dict.get('job'))#None(键不存在返回None)#提供默认值print(my_dict.get('job','未知'))#未知print(my_dict.get('age',0))#25(键存在时返回实际值)setdefault()方法示例3my_dict={'name':'Alice','age':25}#键存在时返回对应的值print(my_dict.setdefault('name','Bob'))#Alice#键不存在时设置默认值并返回print(my_dict.setdefault('city','Shanghai'))#Shanghaiprint(my_dict)#{'name':'Alice','age':25,'city':'Shanghai'}keys()方法示例4my_dict={'name':'Alice','age':25,'city':'Beijing'}#获取所有键keys=my_dict.keys()print(keys)#dict_keys(['name','age','city'])print(list(keys))#['name','age','city']#遍历键forkeyinmy_dict.keys():print(key)values()方法示例5my_dict={'name':'Alice','age':25,'city':'Beijing'}#获取所有值values=my_dict.values()print(values)#dict_values(['Al
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 车工岗位技能实训教学课件
- 广西教育测试试题及参考答案
- 《代餐食品选择指南》解读
- 数学二历年真题(2025考研全国统考·含答案详解)
- 数学二历年真题(2024考研全国统考·真题逐题精讲)
- 数学三历年真题(2026考研全国统考·内部资料)
- 跌倒风险季度护理质控管控课件
- PLC笔试题目和标准解答呈现
- 统编教材期中试题及答案
- 2026年知识产权申请与保护课件
- 旋转楼梯钢结构施工方案
- 2026年党校入学 测试题及答案
- 八年级开学第一次家长会课件
- 藏医霍尔麦疗法
- 《产后康复服务合规操作技术导则(试行)》
- 适老化居家环境设计与改造(第二版)教学标准
- 2025广东广州水投集团招聘纪检监察员1人笔试历年备考题库附带答案详解2套试卷
- 2025年广东省第一次普通高中学业水平合格性考试(春季高考)语文试题(含答案详解)
- GB/T 18015.5-2025数字通信用对绞或星绞多芯对称电缆第5部分:具有1 000 MHz及以下传输特性的对绞或星绞对称电缆水平层布线电缆分规范
- 企业系统用户账号申请流程说明
- 2025年西学中培训结业考试卷带答案
评论
0/150
提交评论