【python】数据容器:dict(字典、映射)
目录
- 数据容器入门
- 数据容器:list(列表)
- list(列表)的遍历
- 数据容器:tuple(元组)
- 数据容器:str(字符串)
- 数据容器的切片
- 数据容器:set(集合)
- 数据容器:dict(字典、映射)
- 数据容器的通用操作
- 综合案例
数据容器:dict(字典、映射)
- 字典的定义
- 字典的常用操作
学习目标
- 掌握字典的定义格式
为什么使用字典
生活中的字典
新华字典。
通过【字】
就能找到对应的【含义】
所以,我们可以认为,生活中的字典就是记录的一堆:
【字】:【含义】
【字】:【含义】
…
【字】:【含义】
为什么使用字典
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 不可为字典)
那么,就表明,字典是可以嵌套的
需求如下:记录学生各科的考试信息
姓名 | 语文 | 数学 | 英语 |
---|---|---|---|
王力宏 | 77 | 66 | 33 |
周杰伦 | 88 | 86 | 55 |
林俊杰 | 99 | 96 | 66 |
{"姓名":{"语文": 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
总结:
- 为什么使用字典
字典可以提供基于 Key 检索 Value 的场景实现
就像查字典一样
- 字典的定义语法
# 定义字典字面量
{key: value, key: value, ......, key: value}
# 定义字典变量
my_dict = {key: value, key: value, ......, key: value}
# 定义空字典
my_dict = {} # 空字典定义方式1
my_dict = dict() # 空字典定义方式2
- 字典的注意事项
- 键值对的 Key 和 Value 可以是任意类型(Key不可为字典)
- 字典内 Key 不允许重复,重复添加等同于覆盖原有数据
- 字典不可以使用下标索引,,是通过 Key 检索 Value