python 字典的概念叙述和使用方法

news2024/9/24 9:21:08

文章目录

        • 1. 一个简单的字典
        • 2. 使用字典
          • 2.1 访问字典中的值
          • 2.2 添加键-值对
          • 2.3 修改字典中的值
          • 2.4 删除键-值对
        • 3. 遍历字典
          • 3.1 遍历所有键-值对
          • 3.2 遍历字典中的所有键
          • 3.3 按顺序遍历字典中的所有键
          • 3.4 遍历字典中的所有值
        • 4.嵌套
          • 4.1 字典列表
          • 4.2 range() 函数
          • 4.3 在字典中存储列表
          • 4.4 在字典中存储字典

1. 一个简单的字典

我们先从写一个简单的字典示例开始,
顺便看一下 python 字典的语法。

student ={'姓名':'张三','年龄':15} #第一个值 张三是字符串类型,所以用''包裹,
										#第二个值是整数类型,所以没有使用''

print(student['姓名'])
print(student['年龄'])

字典和元组一样,都用 {花括号} 来包裹中间的元素,
元组内的元素是不可以改变的。而字典中的元素内容都是成对的。

歪曲一点解释的话:
我们使用列表时,如果要操作内部的元素,列表有索引下标,
通过索引下标,我们就可以操作。而字典呢,
字典就的元素都是成对的,这也就好像我们自己来设置索引下标,
不过存储的值是多少,我们只要记得自己设置的“索引”就可以操作到元素。

我们来看一下输出内容:
在这里插入图片描述

现在我们对字典有了简单的认识,
具体如何取使用,我们继续看下面第二个标题。

2. 使用字典

在 python中,字典是一系列键-值对,每个键都有一个与之对应的值,
我们可以使用键来访问相关联的值。与键相关联的值可以是数字、字符串、列表、乃至字典。

python中的任何对象都可以作为字典中的值。

2.1 访问字典中的值

字典中可以包含任意数量的键-值对,想要访问一个字典当中的值,
需要通过与其对应的键来实现访问。

python
student ={'姓名':'李四'}
print(student['姓名'])
2.2 添加键-值对

字典是一种动态结构,可随时在其中添加键-值对。

现在我们有了创建好的字典,那代码如何写才能向其中添加键-值对呢?

student ={'姓名':'李四'}

student['年龄'] =15
student['班级'] ='3年1班'

#打印整个字典
print(student)

我们来看一下添加后的结果:
在这里插入图片描述
这里要告诉大家一点,
键-值对的排列顺序与添加顺序不同,Python 不关心键-值对的添加顺序,
而只关心键和值之间的关联关系。

2.3 修改字典中的值

记不记得上篇文章,我们聊过一个话题,
就是列表 用 [方括号] 而元组 用 {花括号},字典也是用{花括号}
而三者不管是哪一个,进行值或元素 操作的时候,都是用的[方括号]。
个人感觉还是挺合理的,前两者有索引下标,后者随波逐流,感觉很方便用户使用。

我们来写一下修改字典值的代码吧。

student = {'姓名':'张三','年龄':15}
#现在将 姓名更改成 李四,年龄更改为18

student['姓名'] = '李四'
student['年龄'] = 19
print(student)

在这里插入图片描述
看一下,是不是成功修改了呢。

2.4 删除键-值对

对于列表中不在需要的信息,也可以使用像删除列表元素时的del语句进行删除。
看一下 del 语句删除字典中的键值对该怎么写:

# 使用 del 语句删除时,必须指定字典名和要删除的键
student = {'姓名':'张三','年龄':15}
print(student)

del student['年龄']
print(student)
#被删除的键值对是永久消失的

3. 遍历字典

一个 python 字典可能只包含几个键-值对,也可能包含数百万个键-值对。
鉴于字典可能包含大量的数据,python支持对字典进行遍历。

字典可用于各种方式存储信息,因此有多重遍历字典的方式:可遍历字典的所有键-值对、键或值。

3.1 遍历所有键-值对

我们先来创建一个存储学生信息的字典:

student ={'姓名':'张三','年龄':'10','班级':'三年1班'}

接下来我们通过 for循环来获取字典中的所有信息:

for key,value in student.items():
	print("Key键\t"+key)
	print("Value值\t"+value)

// items( ) 这个函数会返回字典当中的所有键-值

而key 和 value 是我们要遍历字典时,用于存储信息的临时变量。
你也可以另起名称,就像遍历列表时一样,只要见名知意即可。

我们来看一下本段代码的执行结果:
在这里插入图片描述

3.2 遍历字典中的所有键

在不需要使用字典中的值时,方法 keys() 很有用。
下面我们来写段示例,演示一下对于只遍历键的情况。

student ={'姓名':'张三','年龄':'10','班级':'三年1班'}

for key in student.keys():
	print('key:'+key)

看一下输出结果:
在这里插入图片描述

3.3 按顺序遍历字典中的所有键

字典明确的记录着自己所存储的键和值之间的关系,但获取字典元素时,
获取顺序是不可预测的。

想以特定的顺序返回元素,一种办法是在for循环中对返回的键进行排序。
python提供函数 sorted() 来获得按特定顺序排列的键列表的副本。

students ={'张三':'c','李四':'python','王五':'java','赵六':'c++'}

for key in sorted(students.keys()):
	print(key+'同学,欢迎你学习 python 语言')

我们来输出看一下,sorted() 函数是否帮助我们正确的排列了列表中的键。
在这里插入图片描述

3.4 遍历字典中的所有值

在 python 中,针对字典中保存的所有值,可使用 values() 函数,
这个函数会返回一个值列表,不包含键。

students ={'张三':'c','李四':'python','王五':'java','赵六':'c++'}

for value in students.values():
	print(value)

这样使用 values() 函数就可以成功将字典中包含的值,全部输出。
但如果有这样的一个问题:假如字典中保存了成千上万的值,
通过 values 全部输出是没有问题了,但是成千上万的数据量难免出现重复内容。

怎样解决重复内容的问题呢?

我们可以借助 python 提供给我们的另一个函数:set ()

students ={'张三':'c','李四':'python','王五':'java','赵六':'c++'}

for value in set(students.values()):
	print(value)

通过set 函数,将找寻字典中没有重复内容的所值,保存在一个集合中。

4.嵌套

有时候,我们需要将字典存储在列表中,或者将列表作为值存储在字典中。
这种操作称为嵌套。

4.1 字典列表

我们使用字典存储学生的信息,
假设,第一个创建的字典存储了张三同学的信息,
那么第二个同学的信息如何保存呢?

考虑到这个问题,我们可以继续使用字典存储同学的信息,
如果有新同学的信息需要存储,我们就继续创建新的字典,
当学生的信息存储完成之后,在将字典存储到列表当中,
使用列表来存储所有存储了学生信息的字典。

student1 ={'姓名':'张三','年龄':'15','班级':'初三一班'}
student2 ={'姓名':'李四','年龄':'15','班级':'初三二班'}
student3 ={'姓名':'王五','年龄':'15','班级':'初三一班'}

students =[student1,student2,student3]

for student in students:
	print(student)

我们来看一下遍历列表的输出结果:
在这里插入图片描述

4.2 range() 函数

上述示例中,我们创建每个学生存储学生的字典,都是手动编码的,
先不考虑信息的问题,如何解决自动创建呢?

我们可以借助python 提供给我们的 range() 函数

#先创建一个空列表
students =[]

#设置批量创建字典存储学生信息的过程
for student in range(30):
	student_zd = {'姓名':'张三','年龄':15,'班级':'初三一班'}
	students.append(student_zd)

#遍历列表,输出存储的前五个信息
for stu in students[:5]:
	print(stu)

输出存储的前五个信息时,我们就用到了前面章节中掌握的切片知识点了。

4.3 在字典中存储列表

我们来写一个讲列表存储在字典中的示例:

#创建一个用于存储披萨信息的字典
	#存储配方时,将值的形式以列表进行存储
pizza ={
		'品名':'榴莲披萨',
		'配方':['榴莲','白面','矿物质水','芝麻']
	   }

# 尝试打印字典中的 普通形式键值对
print('推荐你品尝一下:'+pizza['品名'])

# 尝试打印字典中 以列表形式存储的键值对
print('榴莲披萨是这样做的:\n')
for pa in pizza['配方']:
	print(pa)

将列表存储在字典当中,只要捋清逻辑,
其实还是很好实现的,我们来看一下输出结果:
在这里插入图片描述

4.4 在字典中存储字典
user ={
		'user1':{'userName':'张三','userInfo':'QQ邮箱'},
		'user2':{'userName':'李四','userInfo':'网易邮箱'}
	 }
	 
#尝试打印字典中的值
for key,value in user.items():
	print('正在尝试获取用户信息....')
	print('---------------------')
	print('当前正在解析用户:'+key+'的信息')
	
	uName = '用户'+value['userName']+'正在以'+value['userInfo']+'的登录形式访问网站'
	print(uName)

在本段示例中,我们想创建了一个存储用户信息的字典,
该字典的键是用户的登录id,其实就是一个字符串。
而该键所对应的值是一个嵌套的新字典,在该字典中,正常存储信息。

在输出时,
我们先遍历 得到字典的key值,还有value值,
输出用户的信息值,也就是登录id,直接输出字典key即可。

而该key所对应的字典的值,利用key[索引到字典内部嵌套的字典的key],
其实很简单,就是利用被嵌套字典的key输出它的value


最后我们来看一下输出结果:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/340825.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java中导入、导出Excel——HSSFWorkbook 使用

一、介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统、银行系统)。或者是:我们已经习惯用Excel打印。这样在我们实际的开发中,很多时候需要…

自动化测试岗位求职简历编写规范+注意事项,让你的简历脱颖而出

目录 前言 1.个人信息 2.教育背景(写最高学历) 3.个人技能(按精通/掌握/熟练/了解层次来写) 4.工作经历 5.工作经验/项目经历 6.自我评价 总结 前言 挑选一个阅读舒适度不错的模板 HR和面试官看的简历多,都是快速阅读,舒适度特别重要&#xff1b…

ctfshow 每周大挑战 极限命令执行

《简单的命令执行题目》 这里感叹一下,g4佬是真好厉害,这次题目十分的难,嗯,对我这种菜鸡来说是这样的,想了一天,最后结束了,也还是没有想明白第五题的解法,我真是fw,到最…

Oracle Trace File Analyzer 介绍及简单使用

一、什么是Oracle Trace File Analyzer Oracle Autonomous Health Framework(AHF) 包含 Oracle ORAchk, Oracle EXAchk, and Oracle Trace File Analyzer(TFA). AHF工具包包含了Oracle常用的多种诊断工具,如 ORAchk, Oracle EXAchk, and Oracle Trace File Analyzer…

简单的密码加密

用户的密码必须被加密后再存储到数据库, 否则就存在用户账号安全问题用户使用的原始密码通常称之为"原文"或"明文", 经过算法的运算, 得到的结果通常称之为"密文"在处理密码加密时, 不可以使用任何加密算法, 因为所有加密算法都是可以被逆向运算…

内网渗透(十九)之Windows协议认证和密码抓取-网络认证(基于挑战响应认证的NTLM协议)

系列文章第一章节之基础知识篇 内网渗透(一)之基础知识-内网渗透介绍和概述 内网渗透(二)之基础知识-工作组介绍 内网渗透(三)之基础知识-域环境的介绍和优点 内网渗透(四)之基础知识-搭建域环境 内网渗透(五)之基础知识-Active Directory活动目录介绍和使用 内网渗透(六)之基…

尚医通(十一)医院模拟系统接口

目录一、第三方医院系统简介及运行二、上传医院接口1、数据分析2、添加service接口3、添加repository接口4、添加controller接口5、添加帮助类6、图片base64说明7、base64码通过http传输问题三、查询医院接口1、添加service方法2、添加controller四、上传科室接口1、添加科室基…

C语言学习笔记(二): 简单的C程序设计

数据的表现形式 常量 在C语言中常量有以下几种: 整型常量: 0,-1,100实型常量: 小数形式(12.12);指数形式(12.1e312.110312.1\times 10^312.1103)字符常量: 普通字符(’a’,’Z’,’#’);转义字符(’\n’…

nacos 集群搭建

1、单节点nacos搭建 ------------------------> 跳转单节点搭建 2、nacos 集群 搭建 请注意本次演示在win上进行,在linux 或 k8s,过程类似 2.1 将nacos,copy成三份 2.2 修改nacos配置信息 如下图,需要修改两个配置文件&am…

ansible的部署与命令模块

目录 一、ansible的概述 1、ansible简介 2、ansible特点 3、官方网站 4、ansible的模块组成 5、ansible的工作机制 二、ansible部署 1、ansible的安装 三、ansible的命令行模块 1、command模块 2、shell模块 3、cron模块 4、user模块 5、group模块 6、copy模块 7…

千锋教育+计算机四级网络-计算机网络学习-03

目录 UDP编程准备 字节序概述 如何判断自己主机上的大小端方式 大小端重点 大小端所需函数 htonl函数 ntohl函数 htons函数 ntohs函数 地址转换函数 inet_pton函数 inet_ntop函数 UDP编程准备 字节序概述 字节序概念 是指多字节数据的存储顺序,一个字节是…

浏览器缓存是如何提升网站访问速度的

提升速度,降低负载 浏览器访问一个页面时,会请求加载HTML、CSS和JS等静态资源,并把这些内容渲染到屏幕上。 对浏览器来说,如果页面没有更新,每次都去请求服务器是没有必要的。所以,把下载的资源缓存起来&…

快速傅里叶算法(FFT)快在哪里?

目录 前言 1、DFT算法 2、FFT算法 2.1 分类 2.2 以基2 DIT(时间抽取) FFT 算法为例 2.2.1 一次分解 2.2.2 多次分解 参考 前言 对信号分析的过程中,为了能换一个角度观察问题,很多时候需要把时域信号波形变换到频域进行分…

有什么免费好用的全球天气api?

简单介绍几个,选你觉得合适的就行。(下面推荐的国内外的都有,访问速度会有些差别) 高德天气 API -天气查询-API文档-开发指南-Web服务 API | 高德地图API知心天气 API -HyperData 数据产品简介 心知天气和风天气 API -和风天气开…

AI_News周刊:第一期

2023.02.06—2023.02.12 关于ChatGPT的前言: 在去年年末,OpenAI的ChatGPT在技术圈已经火了一次,随着上周它的二次出圈,ChatGPT算得上是人工智能领域的一颗明星,它在聊天机器人领域有着不可忽视的影响力。其准确、快速…

webpack.config.js哪里找?react项目关闭eslint监测

目录 webpack.config.js哪里找? react项目关闭eslint监测 webpack.config.js哪里找? 在React项目中,当我们需要修改一些配置时,发现找不到webpack.config.js,是我们创建的项目有问题吗,还需新创建项目的项…

【html】模仿C站动态发红包界面,css+div+js实现布局和交互(适合入门)

最近有些小伙伴咨询博主说前端布局好难,其实都是熟能生巧! 模仿C站动态发红包界面,cssdiv实现布局,纯javascript实现交互效果 目录 1、界面效果 2、界面分析 2.1、整体结构 2.2、标题 2.3、表单 2.4、按钮 3、代码实现 3.…

【Kafka】【七】主题和分区的概念

主题和分区的概念 主题Topic 主题-topic在kafka中是⼀个逻辑的概念,kafka通过topic将消息进⾏分类。不同的topic会被订阅该topic的消费者消费。 但是有⼀个问题,如果说这个topic中的消息⾮常⾮常多,多到需要⼏T来存,因为消息是…

Spring Security in Action 第十二章 OAuth 2是如何工作的?

本专栏将从基础开始,循序渐进,以实战为线索,逐步深入SpringSecurity相关知识相关知识,打造完整的SpringSecurity学习步骤,提升工程化编码能力和思维能力,写出高质量代码。希望大家都能够从中有所收获&#…

实战打靶集锦-005-HL

**写在前面:**记录一次曲折的打靶经历。 目录1. 主机发现2. 端口扫描3. 服务枚举4. 服务探查4.1 浏览器访问4.2 目录枚举4.3 探查admin4.4 探查index4.5 探查login5 公共EXP搜索6. 再次目录枚举6.1 探查superadmin.php6.2 查看页面源代码6.3 base64绕过6.4 构建反弹…