目录
数据容器:dict(字典、映射)
为什么要使用字典?
因为可以使用字典,实现用key取出Value的操作
字典的定义
字典的定义,同样使用{},不过存储的元素是一个个的键值对:
①使用{}存储原始,每一个元素是一个键值对
②每一个键值对包含Key和Value(用冒号分隔)
③键值对之间使用逗号分隔
④Key和Value可以是任意类型的数据(key不可为字典)
⑥Key不可重复,重复会对原有数据覆盖
语法:
定义字典变量:
my_dict={key:value,key:value,…,key:value}
定义空字典2种方式:
①my_dict={}
②my_dict=dict()
示例:
# 定义字典
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可以是任意数据类型(Key不可为字典)
那么,就表明,字典是可以嵌套的
嵌套字典的内容获取
示例:
# 从字典中基于key获取value
my_dict1 = {
"二狗": 99, "小胖": 88, "大白": 77}
score = my_dict1["二狗"]
print(f"二狗的分数是:{
score}")
# 字典的嵌套
stu_score_dict = {
"二狗": {
"语文": 99,
"数学": 88,
"英语": 77},
"小胖": {
"语文": 90,
"数学": 80,
"英语": 70},
"大白": {
"语文": 95,
"数学": 85,
"英语": 75},
}
print(f"学生的考试信息是:{
stu_score_dict}")
# 从嵌套字典中获取数据
# 看一下二狗的数学成绩
score = stu_score_dict["二狗"]["数学"]
print(f"二狗的数学成绩是:{
score}")
运行结果:
二狗的分数是:99
学生的考试信息是:{‘二狗’: {‘语文’: 99, ‘数学’: 88, ‘英语’: 77}, ‘小胖’: {‘语文’: 90, ‘数学’: 80, ‘英语’: 70}, ‘大白’: {‘语文’: 95, ‘数学’: 85, ‘英语’: 75}}
二狗的数学成绩是:88
字典的注意事项
键值对的Key和Value可以是任意类型(Key不可为字典)
字典内Key不允许重复,重复添加等同于覆盖原有数据
字典不可用下标索引,而是通过Key检索Value
字典的常用操作
新增元素
语法:字典[Key] = Value,结果:字典被修改,新增了元素
注意:新增和更新元素的语法一致,如果Key不存在即新增,如果Key存在即更新(Key不可重复)
更新元素
语法:字典[Key] = Value,结果:字典被修改,元素被更新
注意:字典Key不可以重复,所以对已存在的Key执行上述操作,就是更新Value值
删除元素
语法:字典.pop(Key),结果:获得指定Key的Value,同时字典被修改,指定Key的数据被删除
清空字典
语法:字典.clear(),结果:字典被修改,元素被清空
获取全部的key
语法:字典.keys(),结果:得到字典中的全部Key
遍历字典
语法:for key in 字典.keys()
注意:字典不支持下标索引,所以同样不可以用while循环遍历
计算字典内的全部元素(键值对)数量
语法:len(字典)
结果:得到一个整数,表示字典内元素(键值对)的数量
示例:
# 定义一个字典
my_dict = {
"ergou": 99, "dabai": 88, "xiaopang": 77}
# 新增元素
my_dict["erpang"] = 66
print(f"增加元素后:{
my_dict}")
# 更新元素
my_dict["ergou"] = 55
print(f"更新元素后:{
my_dict}")
# 删除元素
score = my_dict.pop("xiaopang")
print(f"字典删除一个元素后:{
my_dict},xiaopang的分数是{
score}")
# 清空元素,clear
my_dict.clear()
print(f"字典被清空了,内容是:{
my_dict}")
# 获取全部的key
my_dict = {
"ergou": 99, "dabai": 88, "xiaopang": 77}
keys = my_dict.keys()
print(f"字典的全部keys是:{
keys}")
# 遍历字典
# 方式1:通过获取全部key来完成遍历
for key in keys:
print(f"字典的keys是:{
key}")
print(f"字典的value是:{
my_dict[key]}")
# 方式2:直接对字典进行for循环,每一次循环都是直接得到key
for key in my_dict:
print(f"2字典的keys是:{
key}")
print(f"2字典的value是:{
my_dict[key]}")
# 统计字典内的元素数量,len()函数
num = len(my_dict)
print(f"字典的元素数量有:{
num}")
运行结果:
增加元素后:{‘ergou’: 99, ‘dabai’: 88, ‘xiaopang’: 77, ‘erpang’: 66}
更新元素后:{‘ergou’: 55, ‘dabai’: 88, ‘xiaopang’: 77, ‘erpang’: 66}
字典删除一个元素后:{‘ergou’: 55, ‘dabai’: 88, ‘erpang’: 66},xiaopang的分数是77
字典被清空了,内容是:{}
字典的全部keys是:dict_keys([‘ergou’, ‘dabai’, ‘xiaopang’])
字典的keys是:ergou
字典的value是:99
字典的keys是:dabai
字典的value是:88
字典的keys是:xiaopang
字典的value是:77
2字典的keys是:ergou
2字典的value是:99
2字典的keys是:dabai
2字典的value是:88
2字典的keys是:xiaopang
2字典的value是:77
字典的元素数量有:3
字典的常用操作总结
编号 | 操作 | 说明 |
---|---|---|
1 | 字典[Key] | 获取指定Key对应的Value值 |
2 | 字典[Key] = Value | 添加或更新键值对 |
3 | 字典.pop(Key) | 取出Key对应的Value并在字典内删除此Key的键值对 |
4 | 字典.clear() | 清空字典 |
5 | 字典.keys() | 获取字典的全部Key,可用于for循环遍历字典 |
6 | len(字典) | 计算字典内的元素数量 |
字典的特点
经过上述对字典的学习,可以总结出字典有如下特点:
1、可以容纳多个数据
2、可以容纳不同类型的数据
3、每一份数据都是Key:Value键值对
4、可以通过Key获取到Value,Key不可重复(重复会覆盖)
5、不支持下标索引
6、可以修改(增加或删除更新元素等)
7、支持for循环,不支持while循环