Python数据容器(字典)
字典
- 1.字典的定义
- 2.字典数据的获取
- 3.字典的嵌套
- 4.嵌套字典的内容获取
- 5.字典的常用操作
- 6.常用操作总结
- 7.遍历字典
- 8.练习
1.字典的定义
同样使用{},不过存储的元素是一个一个的:键值对,语法如下
# 定义字典字面量
{key:value,key:value,...,key:value}
# 定义字面量
my_dict = {key:value,key:value,...,key:value}
# 定义空字典
my_dict = {}
my_dict = dict{}
# 学生成绩
stu_score = {"王力宏":99,"周杰伦":88,"林俊杰":77}
print(stu_score) # 结果 {'王力宏': 99, '周杰伦': 88, '林俊杰': 77}
2.字典数据的获取
字典同集合一样,不可以使用下标索引,但是可以通过Key值来获取对应的Value
# 学生成绩
stu_score = {"王力宏":99,"周杰伦":88,"林俊杰":77}
print(stu_score["王力宏"]) # 结果 99
print(stu_score["周杰伦"]) # 结果 88
print(stu_score["林俊杰"]) # 结果 77
3.字典的嵌套
姓名 | 语文 | 数学 | 英语 |
---|---|---|---|
王力宏 | 77 | 66 | 33 |
周杰伦 | 88 | 86 | 55 |
林俊杰 | 99 | 96 | 66 |
# 代码
stu_score = {"王力宏":{"语文":77,"数学":66,"英语":33},"周杰伦":{"语文":88,"数学":86,"英语":55},"林俊杰":{"语文":99,"数学":96,"英语":66}}
# 优化代码
stu_score = {"王力宏":{"语文":77,"数学":66,"英语":33},"周杰伦":{"语文":88,"数学":86,"英语":55},"林俊杰":{"语文":99,"数学":96,"英语":66}
}
4.嵌套字典的内容获取
stu_score = {"王力宏":{"语文":77,"数学":66,"英语":33},"周杰伦":{"语文":88,"数学":86,"英语":55},"林俊杰":{"语文":99,"数学":96,"英语":66}
}
print(stu_score["王力宏"]) # 结果 {'语文': 77, '数学': 66, '英语': 33}
print(stu_score["王力宏"]["语文"]) # 结果 77
print(stu_score["周杰伦"]["数学"]) # 结果 86
5.字典的常用操作
- 新增元素
- 语法:字典[Key] = Value
- 结果:字典被修改,新增了元素
stu_score = {"王力宏":77,"周杰伦":88,"林俊杰":99
}
# 新增,张学友的考试成绩
stu_score["张学友"]=66
print(stu_score) # 结果 {'王力宏': 77, '周杰伦': 88, '林俊杰': 99, '张学友': 66}
- 更新元素
- 语法:字典[Key] = Value
- 结果:字典被修改,元素被更新
注意:字典Key不可以重复,所以是对已存在Key执行的操作,更改的是value的值
stu_score = {"王力宏":77,"周杰伦":88,"林俊杰":99
}
# 更新,王力宏的考试成绩
stu_score["王力宏"]=100
print(stu_score) # 结果 {'王力宏': 100, '周杰伦': 88, '林俊杰': 99}
- 删除元素
- 语法:字典.pop(Key)
- 结果:获得指定Key的Value,同时字典被修改,指定Key的数据被删除
stu_score = {"王力宏":77,"周杰伦":88,"林俊杰":99
}
value= stu_score.pop("王力宏")
print(value) # 结果 77
print(stu_score) # 结果 {'周杰伦': 88, '林俊杰': 99}
- 清空字典
- 语法:字典.clear()
- 结果:字典被修改,元素被清空
stu_score = {"王力宏":77,"周杰伦":88,"林俊杰":99
}
stu_score.clear()
print(stu_score) # 结果 {}
- 获取全部的Key
- 语法:字典.keys()
- 结果:得到字典中全部的Key
stu_score = {"王力宏":77,"周杰伦":88,"林俊杰":99
}
keys = stu_score.keys()
print(keys) # 结果 dict_keys(['王力宏', '周杰伦', '林俊杰'])
- 计算字典内的全部元素(键值对)数量
- 语法:len(字典)
- 结果:得到一个整数,表示字典元素(键值对)数量
stu_score = {"王力宏":77,"周杰伦":88,"林俊杰":99
}
print(len(stu_score)) # 结果 3
6.常用操作总结
编号 | 操作 | 说明 |
---|---|---|
1 | 字典[Key] | 获取指定Key对应的Value值 |
2 | 字典[Key]=Value | 添加或更新键值对 |
3 | 字典.pop(Key) | 取出Key对应的Value并在字典内删除此Key的键值对 |
4 | 字典.clear() | 清空字典 |
5 | 字典.keys() | 获取字典的全部Key,可用于for循环遍历字典 |
6 | len(字典) | 计算字典内元素数量 |
7.遍历字典
注意:字典不支持下标索引,不可以使用while循环
- for循环遍历
stu_score = {"王力宏":77,"周杰伦":88,"林俊杰":99
}
keys = stu_score.keys()
for key in keys:print(f"学生{key}的分数是:{stu_score[key]}")
## 结果
学生王力宏的分数是:77
学生周杰伦的分数是:88
学生林俊杰的分数是:99
8.字典的特点
- 可以容纳多个数据
- 可以容纳多个不同类型的数据
- 每一份数据都是KeyValue键值对
- 可以通过Key获取到Value,Key不可以重复
- 不支持下标索引
- 可以修改(增加或删除更新元素)
- 支持for循环
8.练习
# 定义字典
information = {"王力宏":{"部门":"科技部","工资":3000,"级别":1},"周杰伦":{"部门":"市场部","工资":5000,"级别":2},"林俊杰":{"部门":"市场部","工资":7000,"级别":3},"张学友":{"部门":"科技部","工资":4000,"级别":1},"刘德华":{"部门":"市场部","工资":6000,"级别":2}
}
print(f"全体员工当前信息如下{information}")
keys = information.keys()
# for循环遍历
for key in keys:if information[key]["级别"] == 1:# 升职加薪操作information[key]["级别"] += 1information[key]["工资"] += 1000
print(f"升职加薪操作之后,信息如下{information}")
## 输出
全体员工当前信息如下{'王力宏': {'部门': '科技部', '工资': 3000, '级别': 1}, '周杰伦': {'部门': '市场部', '工资': 5000, '级别': 2}, '林俊杰': {'部门': '市场部', '工资': 7000, '级别': 3}, '张学友': {'部门': '科技部', '工资': 4000, '级别': 1}, '刘德华': {'部门': '市场部', '工资': 6000, '级别': 2}}
升职加薪操作之后,信息如下{'王力宏': {'部门': '科技部', '工资': 4000, '级别': 2}, '周杰伦': {'部门': '市场部', '工资': 5000, '级别': 2}, '林俊杰': {'部门': '市场部', '工资': 7000, '级别': 3}, '张学友': {'部门': '科技部', '工资': 5000, '级别': 2}, '刘德华': {'部门': '市场部', '工资': 6000, '级别': 2}}
相关文章:

Python数据容器(字典)
字典 1.字典的定义2.字典数据的获取3.字典的嵌套4.嵌套字典的内容获取5.字典的常用操作6.常用操作总结7.遍历字典8.练习 1.字典的定义 同样使用{},不过存储的元素是一个一个的:键值对,语法如下 # 定义字典字面量 {key:value,key:value,...,…...

餐饮展示小程序的作用是什么
餐饮是市场重要的组成部分,尤其是我国八大菜系,各类细分菜数量非常多,并分布在全国,各类大小品牌餐饮商家数量也非常庞大,每个城市的商业街都是一个接一个餐厅,酒类、酒店多样。 餐饮行业经营痛点比较明显…...
33、Flink 的Table API 和 SQL 中的时区
Flink 系列文章 1、Flink 部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接 13、Flink 的table api与sql的基本概念、通用api介绍及入门示例 14、Flink 的table api与sql之数据类型: 内置数据类型以及它们的属性 15、Flink 的ta…...

Origin:科研绘图与学术图表绘制从入门到精通
文章目录 一、引言二、安装和启动Origin三、创建和保存图表四、深入学习Origin绘图功能五、应用Origin进行科研绘图和学术图表绘制六、总结与建议《Origin科研绘图与学术图表绘制从入门到精通》亮点内容简介作者简介目录获取方式 一、引言 Origin是一款功能强大的数据分析和科…...
腾讯云标准型SA4服务器AMD处理器性能测评
腾讯云服务器标准型SA4实例CPU采用AMD处理器,新一代腾讯云自研星星海双路服务器,搭配AMD EPYC Genoa处理器,内存采用最新 DDR5,默认网络优化,最高内网收发能力达4500万pps,最高内网带宽可支持100Gbps。阿腾…...
LeetCode 2656. K 个元素的最大和:一次遍历(附Python一行版代码)
【LetMeFly】2656.K 个元素的最大和:一次遍历(附Python一行版代码) 力扣题目链接:https://leetcode.cn/problems/maximum-sum-with-exactly-k-elements/ 给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。你需要执行以下操…...
element-ui中Form表单使用自定义验证规则
data() {const validatePass (rule, value, callback) > {if (value.length < 3) {callback(new Error("密码不能小于3位"));} else {callback();}};return {rules: {password: [{ required: true, trigger: "blur", validator: validatePass },]}}…...
android源码添加adb host支持
本文开始参考在 android 上使用 adb client-CSDN博客,在shell中已经可以使用。但当我想在app中用 String command "/data/local/tmp/adb -s 307ef90dc8128844 shell ls";StringBuilder output new StringBuilder();try {Process process Runtime.getR…...
学习c#的第二天
目录 C# 基本语法 using 关键字 class 关键字 C# 中的注释 成员变量 成员函数 类的实例化 标识符 C# 关键字 C# 基本语法 C# 是一种面向对象的编程语言。在面向对象的程序设计方法中,程序由各种相互交互的对象组成。相同种类的对象通常具有相同的类型&…...

CodeWhisperer 使用经验分享
今天给大家分享一下 Amazon CodeWhisperer 编程工具(免费哦),使用这个软件后我的编码质量提升不少,给大家分享一下我的经验。希望大家支持哦。 Amazon CodeWhisperer 是亚⻢逊出品的一款基于机器学习的 AI 编程助手,可…...

数据结构与算法之美学习笔记:18 | 散列表(上):Word文档中的单词拼写检查功能是如何实现的?
目录 前言散列思想散列函数散列冲突解答开篇 前言 本节课程思维导图: Word 的单词拼写检查功能,虽然很小但却非常实用。你有没有想过,这个功能是如何实现的呢?其实啊,一点儿都不难。只要你学完今天的内容,…...
解决java发邮件错误javax.net.ssl.SSLHandshakeException: No appropriate protocol
java发送邮件时报以下错误信息: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher [com.bm6api.controller.v1.AppUserController] - sendLoginAuthCodeMail 发送登录验证码邮件 : {"code":200,"inf…...
杭电oj 2035 人见人爱A^B C语言
#include<stdio.h>void main() {int a, b, i,num;while (~scanf_s("%d%d", &a, &b) && (a ! 0 || b ! 0)){num a;for (i 1; i < b; i){num * a;num % 1000;}printf("%d\n", num);} }...
[量化投资-学习笔记017]Python+TDengine从零开始搭建量化分析平台-异常处理
一个完成的程序一定少不了对异常的处理,以及错误日志的输出。 在之前章节的程序中对这两部分没有进行说明,以下用两个单独的章节进行介绍。 [量化投资-学习笔记016]PythonTDengine从零开始搭建量化分析平台-日志输出 异常处理 Python 通常使用 try .. except 和防…...

Mysql中的索引与事务和B树的知识补充
索引与事务和B树的知识补充 一.索引1.概念2.作用3.使用场景4.使用 二.事务1.为什么使用事务2.事务的概念3.使用3.1脏读问题3.2不可重复读3.3 幻读问题3.4解决3.5 使用代码 三.B树的知识补充1.B树2.B树 一.索引 1.概念 索引是一种特殊的文件,包含着对数据表里所有记…...

2024上海国际智能驾驶技术展览会(自动驾驶展)
2024上海国际智能驾驶技术展览会 2024 Shanghai International Autonomous driving Expo 时间:2024年3月26-28日 地点:上海跨国采购会展中心 随着科技的飞速发展,智能驾驶已经成为了汽车行业的重要趋势。在这个时代背景下,汽车不…...

嵌入式Linux开发,NFS文件系统挂载
在嵌入式linix的开发中,经常会需要在pc端和板端互相传输文件,优先可选择ftp传输,但是有些嵌入式板端不支持,只能使用nfs这种方式,即pc端作为服务端,板端作为客户端,将pc端的某个文件夹挂载到板端…...

什么是3D建模中的“高模”和“低模”?
3D建模中什么是高多边形和低多边形? 高多边形建模和低多边形建模之间的主要区别正如其名称所暗示的那样:您是否在模型中使用大量多边形或少量多边形。 然而,在决定每个模型的细节和多边形级别时,还需要考虑其他事项。最值得注意的…...

python数据结构与算法-04_队列
队列和栈 前面讲了线性和链式结构,如果你顺利掌握了,下边的队列和栈就小菜一碟了。因为我们会用前两章讲到的东西来实现队列和栈。 之所以放到一起讲是因为这两个东西很类似,队列是先进先出结构(FIFO, first in first out), 栈是…...

从理论到实践:深度解读BIO、NIO、AIO的优缺点及使用场景
文章目录 BIO优缺点示例代码 NIO优缺点示例代码 AIO优缺点示例代码 总结 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 BIO、NIO和AIO是Java编程语言中用于处理输入输出(IO…...

VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...

三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...

Chrome 浏览器前端与客户端双向通信实战
Chrome 前端(即页面 JS / Web UI)与客户端(C 后端)的交互机制,是 Chromium 架构中非常核心的一环。下面我将按常见场景,从通道、流程、技术栈几个角度做一套完整的分析,特别适合你这种在分析和改…...