当前位置: 首页 > news >正文

【python】数据容器:dict(字典、映射)

目录

  • 数据容器入门
  • 数据容器:list(列表)
  • list(列表)的遍历
  • 数据容器:tuple(元组)
  • 数据容器:str(字符串)
  • 数据容器的切片
  • 数据容器:set(集合)
  • 数据容器:dict(字典、映射)
  • 数据容器的通用操作
  • 综合案例

数据容器:dict(字典、映射)

  • 字典的定义
  • 字典的常用操作

学习目标

  1. 掌握字典的定义格式

为什么使用字典

生活中的字典
新华字典。

通过【字】
就能找到对应的【含义】

所以,我们可以认为,生活中的字典就是记录的一堆:
【字】:【含义】
【字】:【含义】

【字】:【含义】

为什么使用字典

Python中字典和生活中字典十分相像:

生活中的字典
【字】:【含义】
【字】:【含义】
可以按【字】找出对应的【含义】


Python中的字典
Key:Value
Key:Value
可以按【Key】找出对应的【Value】

为什么使用字典

老师有一份名单,记录了学生的姓名和考试总成绩。

姓名成绩
王力宏77
周杰伦88
林俊杰99

现在需要将其通过Python录入至程序中,并可以通过学生姓名检索学生的成绩

使用字典最为合适:

{"王力宏": 99,"周杰伦": 88,"林俊杰": 77
}

可以通过Key(学生姓名),取到对应的Value(考试成绩)

字典的定义

字典的定义,同样使用{},不过存储的元素是一个个的:键值对,如下语法:

# 定义字典字面量
{key: value, key: value, ......, key: value}
# 定义字典变量
my_dict = {key: value, key: value, ......, key: value}
# 定义空字典
my_dict = {}     # 空字典定义方式1
my_dict = dict() # 空字典定义方式2

演示:

# 定义字典
my_dict1 = {"王力宏": 99, "周杰伦": 88, "林俊杰": 77}# 定义空字典
my_dict2 = {}
my_dict3 = dict()
print(f"字典1的内容是:{my_dict1},类型:{type(my_dict1)}")
print(f"字典2的内容是:{my_dict2},类型:{type(my_dict2)}")
print(f"字典3的内容是:{my_dict3},类型:{type(my_dict3)}")# 定义重复Key的字典
my_dict1 = {"王力宏": 99, "王力宏": 88, "林俊杰": 77}
print(f"重复key的字典的内容是:{my_dict1}")

输出结果:

字典1的内容是:{'王力宏': 99, '周杰伦': 88, '林俊杰': 77},类型:<class 'dict'>
字典2的内容是:{},类型:<class 'dict'>
字典3的内容是:{},类型:<class 'dict'>
重复key的字典的内容是:{'王力宏': 88, '林俊杰': 77}

字典数据的获取

字典同集合一样,不可以使用下标索引

但是字典可以通过 Key 值来取得对应的 Value

# 语法,字典[Key]可以取到对应的value
stu_score = {"王力宏": 99, "周杰伦": 88, "林俊杰": 77}
print(stu_score["王力宏"]) # 结果:99
print(stu_score["周杰伦"]) # 结果:88
print(stu_score["林俊杰"]) # 结果:77

演示:

# 从字典中基于Key获取Value
my_dict1 = {"王力宏": 99, "周杰伦": 88, "林俊杰": 77}
score = my_dict1["王力宏"]
print(f"王力宏的考试分数是:{score}")
score = my_dict1["周杰伦"]
print(f"周杰伦的考试分数是:{score}")

输出结果是:

王力宏的考试分数是:99
周杰伦的考试分数是:88

字典的嵌套

字典的 Key 和 Value 可以是任意数据类型( Key 不可为字典)

那么,就表明,字典是可以嵌套的

需求如下:记录学生各科的考试信息

姓名语文数学英语
王力宏776633
周杰伦888655
林俊杰999666
{"姓名":{"语文": 77,"数学": 66,"英语": 33}
}

演示:

# 定义嵌套字典
stu_score_dict = {"王力宏":{"语文": 77,"数学": 66,"英语": 33}, "周杰伦":{"语文": 88,"数学": 86,"英语": 55}, "林俊杰":{"语文": 99,"数学": 96,"英语": 66}
}
print(f"学生的考试信息是:{stu_score_dict}")# 从嵌套字典中获取数据
# 看一下周杰伦的语文分数是:
score = stu_score_dict["周杰伦"]["语文"]
print(f"周杰伦的语文分数是:{score}")
score = stu_score_dict["林俊杰"]["英语"]
print(f"林俊杰的英语分数是:{score}")

输出结果:

学生的考试信息是:{'王力宏': {'语文': 77, '数学': 66, '英语': 33}, '周杰伦': {'语文': 88, '数学': 86, '英语': 55}, '林俊杰': {'语文': 99, '数学': 96, '英语': 66}}
周杰伦的语文分数是:88
林俊杰的英语分数是:66

总结:

  1. 为什么使用字典

字典可以提供基于 Key 检索 Value 的场景实现
就像查字典一样

  1. 字典的定义语法
# 定义字典字面量
{key: value, key: value, ......, key: value}
# 定义字典变量
my_dict = {key: value, key: value, ......, key: value}
# 定义空字典
my_dict = {}     # 空字典定义方式1
my_dict = dict() # 空字典定义方式2
  1. 字典的注意事项
  • 键值对的 Key 和 Value 可以是任意类型(Key不可为字典)
  • 字典内 Key 不允许重复,重复添加等同于覆盖原有数据
  • 字典不可以使用下标索引,,是通过 Key 检索 Value

http://www.mrgr.cn/news/53126.html

相关文章:

  • 刷c语言练习题9(牛客网)
  • python接口自动化测试框架2.0,让你像Postman一样编写测试用例,支持多环境切换、多业务依赖、数据库断言等
  • 【Python】NumPy(一):数据类型、创建数组及基本操作
  • 别墅优选,约克VRF中央空调为家居增添舒适与幸福感
  • c++ 中虚函数和纯虚函数
  • 中科星图(GVE)——使用随机森林方法进行土地分类
  • Vue2的依赖注入(跨级通信)基本使用
  • ST表 C++
  • LSL常见应用场景及示例<三>
  • pip3安装报error: externally-managed-environment,删除EXTERNALLY-MANAGED即可
  • 成语积累学习
  • PHP-laravel框架
  • 苍穹外卖学习笔记(二十六)
  • Null-text Inversion for Editing Real Images using Guided Diffusion Models
  • AI 自学 Lesson2 - 回归(Regression)
  • Doctype? 严格模式 、混杂模式?
  • 微信小程序用开发工具在本地真机调试可以正常访问摄像头,发布了授权后却无法访问摄像头,解决方案
  • 【热门】智慧果园管理系统解决方案
  • 如何高效规划千人大会?数字化会议管理的实战经验分享!建议收藏!
  • Python 工具库每日推荐【Jinja2 】