版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
专题七字典[考纲要求]1.了解字典的键值对特性2.掌握字典的创建3.掌握字典键值对查询、修改、删除、添加4.掌握字典的函数[课时安排]2课时[知识梳理]字典字典的定义字典(dict)是由一组键(key)和值(values)构成的,键与值之间用冒号分隔,键与值放置在一对花括号内。字典中,键与值之间存在一一对应的关系(映射关系)因此字典是具有映射关系的数据类型。键的作用相当于索引,每个键对应的值就是数据。字典属于可变数据类型,在字典中的键只能是不可变的数据类型而值可以是任何数据类型。下面是字典的语法结构:字典名={键1:值1,键2:值2,键3:值3…}示例:dic={"name":"张三","age":18}创建字典1.创建空字典方法1:空字典直接赋值给变量dict1={}方法2:使用dict()函数来创建dict2=dict()2.创建非空字典使用dict()函数来创建,dict()函数传入列表且列表内的元素是元组的形式的dict2=dict([("name","张三"),("age",18)])print(dict2)#{'name':'张三','age':18}‘键=值’的形式传入道dict()函数内,注意的是键不能使用引号dict3=dict(name="张三",age=18)print(dict3)#{'name':'张三','age':18}3.使用dict()函数将列表、元组、集合转为字典列表转为字典>>>lst=[(1,2),(3,4),(5,6)]>>>dict(lst){1:2,3:4,5:6}元组转为字典>>>tup1=((1,2),(3,4),(5,6))>>>dict(tup1){1:2,3:4,5:6}集合转为字典>>>set1={(1,2),(3,4)}>>>dict(set1){1:2,3:4}字典的特性1.首先键必须是不可变的数据类型,且不可变数据的内部也不能包含可变的数据类型。>>>dic1={"name":"张三","age":18}>>>dic1{'name':'张三','age':18}>>>dic2={[1,2]:"张三",'age':18}Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>TypeError:unhashabletype:'list'可变的数据类型:列表、字典、集合(可变集合)不可变的数据类型:数值、字符串、元组2.键需要是唯一的,不能重复。如果创建字典时键重复了,那么重复的键和值会覆盖前面的键值对。dict1={"name":"张三","age":18,"name":"李四"}print(dict1["name"])#李四3.由于字典的键值对是无序的,因此不支持索引(字典里面是通过键取到对应的值)和切片>>>dic={1:2,3:4}>>>dic[1:3]Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>TypeError:unhashabletype:'slice’总结:字典的键遵循集合的三大特征但是字典的值可以是任意的数据类型,也可以重复。不受任何限制字典的基本操作1.访问字典的值字典对象[“键”]dict1={"name":"张三","age":18}print(dict1["name"])#张三当字典的键是元组时dict1={('name',"姓名"):'张三','age':18}print(dict1[('name',"姓名")])#张三#也可以使用元组内的元素(不推荐)print(dict1['name',"姓名"])#张三当字典的值是列表、元组、字典时字典的值是元组时dict1={'name':'张三','age':18,'info':(180,75)}print(dict1["info"][0])#180字典的值是列表时dict1={'name':'张三','age':18,'info':[180,75]}print(dict1["info"][1])#75#字典的值是字典时dict1={'name':'张三','age':18,'info':{"height":180,"weight":75}}print(dict1["info"]["height"])#1802.修改字典的值字典对象["键"]=新的值dict1={"name":"张三","age":18}dict1["age"]=19print(dict1)#{'name':'张三','age':19}字典的值是元组时dict1={'name':'张三','age':18,'info':(180,75)}dict1["info"]=(185,75)#将元组看成整体print(dict1)不能使用dict1["info"][0]=185来修改字典的值是列表时dict1={'name':'张三','age':18,'info':[180,75]}dict1["info"][0]=185print(dict1["info"])#[185,75]字典的值是字典时dict1={'name':'张三','age':18,'info':{"height":180,"weight":75}}dict1["info"]["height"]=185print(dict1["info"])#{'height':185,'weight':75}如果字典的值是不可变的数据类型就不能修改,不可变的数据类型不能修改的。3.增加字典的键值对字典对象[“新的键”]=新的值dict1={"name":"张三","age":18}dict1["weight"]=75print(dict1)#{'name':'张三','age':18,'weight':75}4.删除字典的键值对del字典对象[“键”]dict1={'name':'张三','age':18,'weight':75}deldict1["weight"]print(dict1)#{'name':'张三','age':18}字典的操作函数1.dict.keys()用于获取dict中所有的键(是dict_keys的数据结构)>>>dic1={"name":"张三","age":18}>>>dic1.keys()dict_keys(['name','age'])>>>list(dic1.keys())#['name','age']2.dict.values()用于获取dict中所有值(是dict_values的数据结构)>>>dic1={"name":"张三","age":18}>>>dic1.values()dict_values(['张三',18])3.dict.items()用于获取dict中所有的(键,值)元组(是dict_values的数据结构)>>>dic1={"name":"张三","age":18}>>>dic1.items()dict_items([('name','张三'),('age',18)])4.dict.get(key[,value])从dict中获取键为key对应的值,如果dict中存在key就会返回key对应的值,如果不存在key,则会返回None,如果给定了value,就会返回指定的value值>>>dic={1:2,3:4,5:6}>>>dic.get(3,7)4>>>dic.get(6,7)7>>>dic.get(6)#不指定值则默认返回None值5.dict.clear()用于删除字典dict中的所有元素使dict变成一个空字典>>>dic={1:2,3:4,5:6}>>>dic.clear()>>>dic{}6.dict.setdefault(key[,value]).如果字典dict中存在key,则该方法返回key对应的值,否则在字典dict中添加key:value,并返回value的值,value默认为None>>>dic={1:2,3:4,5:6}>>>dic.setdefault(3,7)4>>>dic.setdefault(6,7)7>>>print(dic){1:2,3:4,5:6,6:7}7.dict1.update(dict2)用于将字典dict2中的元素添加到字典dict1中,若dict2的键存在于dict1中则会更新对应的值>>>dic={1:2,3:4}>>>dic.update({3:5})>>>dic{1:2,3:5}>>>dic.update({6:7})>>>dic{1:2,3:5,6:7}检查键是否存在于字典中可以使用in运算符检测键是否存在于字典中。例如:>>>dict1={1:"A",2:"B",3:"C"}>>>1indict1True>>>4indict1Falsedic={1:2,3:4,5:6}print(1indic.values())#Falseprint(2indic.values())#Trueprint(3indic.keys())#Trueprint(5indic.items())#5in[(1,2),(3,4),(5,6)]-->False获取键的列表和字典长度使用列表的函数list()可以将字典的键转为列表等价于字典对象.keys()>>>dict1={'name':'张三','age':18,"height":180,"weight":75}print(list(dict1))#['name','age','height','weight’]print(list(dict1.keys())#['name','age','height','weight’]如果想获取字典的值组成的列表,就需要使用字典对象.values()来获取print(list(dict1.values())#['张三',18,180,75]如果想获取字典的键值组成的列表,就需要使用字典对象.items()来获取print(dict1.items())#dict_items([('name','张三'),('age',18),('height',180),('weight',75)])使用函数len()获取字典的长度。一个键值对为一个元素print(len(dict1))#4[限时练习]1.关于字典键的数据类型,下面选项会导致错误()。
A.使用字符串作为键
B.使用元组作为键
C.使用列表作为键
D.使用整数作为键
【答案】C
【解析】字典的键必须是不可变类型,而列表是可变类型,因此无法作为键。2.执行以下代码后,字典的内容是什么?dic={1:2,3:4}dic.update({3:5,5:6})A.
{1:2,3:4,5:6}
B.
{1:2,3:5,5:6}
C.
{3:5,5:6}
D.
{1:2,3:5}
【答案】B
【解析】update()方法会更新已存在的键3的值,并添加新键5。3.下面哪个表达式返回True()。
A.
(1,2)in{1:2,3:4}
B.
2in{1:2,3:4}.values()
C.
[1]in{1:2}.keys()
D.
3in{1:2,3:4}.items()
【答案】B
【解析】values()包含2。选项A检查的是键是否存在,但(1,2)不是键;选项C中列表不可作为键;选项D检查的是完整的键值对,3不是元组形式的键值对。4.执行以下代码后,输出结果是什么()。dic={'a':[1,2],'b':{'x':3}}dic['a'][1]=5dic['b']['x']=4print(dic)A.
{'a':[1,5],'b':{'x':4}}
B.
{'a':[1,2],'b':{'x':3}}
C.报错,因为字典值不可修改
D.
{'a':[5,2],'b':{'x':4}}
【答案】A
【解析】字典的值是列表或嵌套字典时,可以通过索引或键直接修改其内容。5.关于dict.get(key,default)方法,下面说法正确的是()。
A.如果key存在,返回default值
B.如果key不存在,返回None,无论是否指定default
C.如果key不存在且指定了default,返回default
D.总是返回key对应的值,不存在则报错
【答案】C
【解析】get()方法在key不存在时返回default,若未指定default则返回None。6.下面代码的输出是什么()。d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医学课件-创伤性齿突骨折疾病防治指南解读
- 企业信用报告-河北黑一橡胶有限公司
- 2026年护理专业模拟试卷目试卷(含答案)
- 2026年危险货物运输调度员适应性模拟题目及答案详解
- 2007年中国聚酯纤维(PTT)产业市场研究分析报告
- 2026年入学心理模拟题及答案详解
- 信息技术2026年:物联网应用实践考试及答案详解
- 2026年公司鱼油提炼工科技创新考核模拟试卷及答案详解
- 2026年创意设计师专业技能考核模拟试题(含答案)
- 2026年普联工厂测模拟题及答案详解
- 2026年云南省昆明市公安招聘辅警考试试卷带答案
- 26年秋八年级历史1-12课材料研读想一想课后活动答案
- 初中化学中考复习中和反应及反应后溶液成分探究教学设计
- 2026年初级注册安全工程师考试题库(附答案)
- 纪念中国工农红军长征胜利90周年应知应会100题及答案解析
- 新教材部编人教版五年级上册道德与法治(课件)第11课走进新时代
- DB53T 1176.1-2023 云南省行政村、社区编码 第1部分:总则
- 2026上海城投水务校园招聘103人易考易错模拟试题(共500题)试卷后附参考答案
- 2026年酸枣仁行业分析报告及未来发展趋势报告
- 2026年中考历史考前冲刺:小论文 满分方法指导讲义
- 金矿详查实施方案
评论
0/150
提交评论