字典的使用1| 学习笔记

简介: 快速学习字典的使用1

开发者学堂课程【Python Web 开发基础字典的使用1】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/600/detail/8716


字典的使用1


内容简介:

(一)创建字典

(二)“len”获取键值对数量

(三)in和not in

(四)根据键,获取值

(五)修改字典


(一)创建字典

介绍一下字典的操作,以官方文档为准,可以参考官网文档,因为离线文档有时会乱码,点击 Python3,然后找到 Library Reference,然后找到4.Built-in Types,我们的字典在这个4.10 Mapping Types(映射类型)—dict,直接点进来,下面就有他的说明。也可以看离线版的,找 Python3.6,我们找到离线版的,也是一样的在 Standard Library 里找 Mapping Types—dict。

接下来,首先创建一个新的文件:12.字典的使用.py。先从创建开始说起,使用大括号,语法是{k1∶v1,k2:v2,k3∶v3},键与值之间用冒号隔开,多个项之间用逗号隔开,这是键值对的结构,这是之前演示过的第一种方式。我们还可以使用 dict()函数来创建字典,第一种方式我们直接先写 d=dict(name='孙悟空',age='18',gender='男'),

直接 print(d,type(d)),保存执行就会出现,实际上我们就是给这个字典函数传了多个参数,每一个参数都是一个键值对,参数名就是键,参数名就是值(这种方式创建的字典,key 都是字符串)。

还有一个方式,我们可以将一个包含有双值子序列的序列转换为字典,双值序列就是序列中只有两个值,比如[1,2],('a',3),'ab'。如果序列中的元素也是序列,那么我们就称这个元素为子序列,比如[(1,2),(3,4)]。这个列表里放了两个元组,也就是说,在序列内部的序列叫子序列,子序列里面只有两个值就叫双值子序列。如果一个序列中所有的元素都是双值子序列,我们就可以把这个列表转换为字典,写 d=dict([('name','孙悟饭'),('age',18)]),这是一个双值子序列,我们就可以把它转换为字典,一个是 key、一个是 value,在这里 name是 key、孙悟饭就是 value,执行之后,可以看到这是一个,这就是也可以通过 dict 将一个包含双值子序列的序列转换成一个列表,这个一般情况用的比较少。


(二)“len”获取键值对数量

接下来就跟序列有点像了,叫做“len()”可以获取字典中项的个数,也就是键值对的个数。print(len(d)),执行之后是“2”。


(三)in 和 not in

“in”是用来检查字典中是否包含指定的键,“not in”是检查字典中是否不包含指定的键,这两个正好相反。比如 print('name' in d)检查的结果是“True”,如果输入 hello,检查 d 当中有没有 hello 这个键,结果是 False 就证明没有。


(四)根据键,获取值

获取字典里的值,需要根据键来获取。语法是 d[key],直接 print(d['name']),注意这里的'name'一定要加引号,因为这个键就是带引号的,如果不加引号,比如 print(d[age]),执行后就会报错,因为这里的 age 如果不加引号,他就会当成一个变量处理。比如说设置一个变量 n='name',直接print(d[n]),取的是 key 为 name 的值,执行出来的是孙悟空,这时不能加引号,否则会报错。

通过[]来获取值时,如果键不存在,会抛出异常 KeyError。还有一种方式获取字典里的值,就是 get(key[,default]),这个方法要通过字典对象来调,,根据键获取字典中的值。print(d.get('name'))执行出来也是孙悟空,这两种方式基本是一样的。get 这种方式看起来有点麻烦,但是如果获取的键在字典中不存在,会返回 none,比如 print(d.get('hello')),执行出来不会报错,中括号查询不到就会报错。

并且 get 还有一个可选参数 default,如果我们 print(d.get('name','默认值'))执行出来是孙悟空,但如果我们 print(d.get('hello')),执行就会是默认值,也可以指定一个默认值作为第二个参数,这样获取不到值时,将会返回默认值。


(五)修改字典

修改字典的语法是 d[key]=value,如果 key 存在则覆盖,不存在则添加。比如 d['name']='sunwukong',然后print(d)即可,所以可以直接通过 key 修改字典。

还有一种方式就是比如输入 d['address']='花果山',刚才字典中没有 address,但是可以看到执行出来加上了 address,所以一种是修改字典的 key-value,一种是向字典中添加 key-value。

setdefault,set 是设置,default 是默认,setdefault(key[,default])也可以用来向字典中添加 key-value,如果 key 已经存在于字典中,则返回 key 的值,不会对字典做任何操作;如果 key 不存在,则向字典中添加这个 key,并设置 value。比如 d.setdefault('name','猪八戒')然后 print(d)发现 name 没有变成猪八戒;而输入 result=d.setdefault('name','猪八戒'),print('result=',result),因为“name”存在,所以会返回“sunwukong”,如果换为 result=d.setdefault('hello','猪八戒'),再 print 就会出现默认值“猪八戒”。

update,可将其他字典中的 key-value 添加到当前字典中。输入d={'a':1,'b':2,'c'=3},d2={'d':4,'e':5,'f'=6},然后 d.update(d2),print(d),执行后会是包含这两个字典的键值对。但如果,d2={'d':4,'e':5,'f'=6,'a':7},最后 d 里面的 a 就被 d2替换掉变成7了。

相关文章
|
4天前
|
云安全 人工智能 自然语言处理
|
8天前
|
人工智能 Java API
Java 正式进入 Agentic AI 时代:Spring AI Alibaba 1.1 发布背后的技术演进
Spring AI Alibaba 1.1 正式发布,提供极简方式构建企业级AI智能体。基于ReactAgent核心,支持多智能体协作、上下文工程与生产级管控,助力开发者快速打造可靠、可扩展的智能应用。
793 17
|
11天前
|
数据采集 人工智能 自然语言处理
Meta SAM3开源:让图像分割,听懂你的话
Meta发布并开源SAM 3,首个支持文本或视觉提示的统一图像视频分割模型,可精准分割“红色条纹伞”等开放词汇概念,覆盖400万独特概念,性能达人类水平75%–80%,推动视觉分割新突破。
801 59
Meta SAM3开源:让图像分割,听懂你的话
|
2天前
|
人工智能 安全 小程序
阿里云无影云电脑是什么?最新收费价格个人版、企业版和商业版无影云电脑收费价格
阿里云无影云电脑是运行在云端的虚拟电脑,分企业版和个人版。企业版适用于办公、设计等场景,4核8G配置低至199元/年;个人版适合游戏、娱乐,黄金款14元/月起。支持多端接入,灵活按需使用。
235 164
|
9天前
|
搜索推荐 编译器 Linux
一个可用于企业开发及通用跨平台的Makefile文件
一款适用于企业级开发的通用跨平台Makefile,支持C/C++混合编译、多目标输出(可执行文件、静态/动态库)、Release/Debug版本管理。配置简洁,仅需修改带`MF_CONFIGURE_`前缀的变量,支持脚本化配置与子Makefile管理,具备完善日志、错误提示和跨平台兼容性,附详细文档与示例,便于学习与集成。
334 116
|
2天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
350 3
|
6天前
|
弹性计算 搜索推荐 应用服务中间件
阿里云服务器租用价格:一年、1小时及一个月收费标准及优惠活动参考
阿里云服务器优惠汇总:轻量应用服务器200M带宽38元/年起,ECS云服务器2核2G 99元/年、2核4G 199元/年,4核16G 89元/月,8核32G 160元/月,香港轻量服务器25元/月起,支持按小时计费,新老用户同享,续费同价,限时秒杀低至1折。
406 166

热门文章

最新文章