为什么需要字典
当需要记录一份类似学生的姓名和考试的总成绩的时候,使用字典最为合适:可以通过key(学生姓名),取到对应的value(考试成绩)。字典可以实现用key取出value的操作。
字典的定义
同样使用{},不过存储的元素是一个个的:键值对,如下语法:
# 定义字典字面量
{key:value, key:value, ....., key:value}
# 定义字典变量
my_dict = {key:value, key:value, ....., key:value}
# 定义空字典
my_dict = {}
my_dict = dict{}
- 使用{}存储原始,每一个元素是一个键值对
- 每一个键值对包含key和value(用冒号分隔)
- 键值对之间使用逗号分隔
- key和value可以是任意类型的数据(key不可为字典)
- key不可以重复,重复会对原数据覆盖
字典数据的获取
字典同集合一样,不可以使用下标索引,但是字典可以通过key值取得对应的value
# 语法,字典[key]可以取到对应的value
stu_score = {"zhangsan":99, "lisi":95, "wangwu":88}
print(stu_score["zhangsan"])
print(stu_score["lisi"])
print(stu_score["wangwu"])
# 结果:99 95 88
嵌套字典的内容获取
stu_score = {
"zhangsan":{"语文":88, "数学":99,"英语":99}
"lisi":{"语文":58, "数学":59,"英语":69}
"wangwu":{"语文":48, "数学":99,"英语":19}
}
print(stu_score["zhangsan"]) 结果:{"语文":88, "数学":99,"英语":99}
print(stu_score["zhangsan"]["数学"]) 结果:99
字典的常用操作
新增元素
# 语法:字典[key] = Value, 结果:字典被修改,新增了元素
stu_score = {
"zhangsan": 96,
"lisi": 11,
"wangwu": 88
}
stu_score["zhangfei"] = 77
print(stu_score)
# 结果:{'zhangsan': 96, 'lisi': 11, 'wangwu': 88, 'zhangfei': 77}
更新元素
# 语法:字典[key] = value, 结果:字典被修改,元素被更新
stu_score = {
"zhangsan": 96,
"lisi": 11,
"wangwu": 88
}
stu_score["lisi"] = 100
print(stu_score)
# 结果:{'zhangsan': 96, 'lisi': 100, 'wangwu': 88}
删除元素
# 语法:字典.pop[key],结果:获取指定key的value,同时字典被修改,指定key的数据被删除
stu_score = {
"zhangsan": 96,
"lisi": 11,
"wangwu": 88
}
value = stu_score.pop("lisi")
print(value)
print(stu_score)
# 结果:11
# {'zhangsan': 96, 'wangwu': 88}
清空字典
# 语法:字典.clear(),结果:字典被修改,元素被清空
stu_score = {
"zhangsan": 96,
"lisi": 11,
"wangwu": 88
}
stu_score.clear()
print(stu_score)
# 结果:{}
获取全部的key
# 语法:字典.keys(),结果:得到字典的全部key
stu_score = {
"zhangsan": 96,
"lisi": 11,
"wangwu": 88
}
keys = stu_score.keys()
print(keys)
# 结果:dict_keys(['zhangsan', 'lisi', 'wangwu'])
遍历字典
# for key in 字典.keys()
stu_score = {
"zhangsan": 96,
"lisi": 11,
"wangwu": 88
}
keys = stu_score.keys()
for key in keys:
print(f"学生:{key},分数:{stu_score[key]}")
#结果:
# 学生:zhangsan,分数:96
# 学生:lisi,分数:11
# 学生:wangwu,分数:88
注意:字典不支持下标索引,所以同样不可以用while循环便利
计算字典全部元素数量
# 语法:len(字典) 结果:得到一个整数,表示字典内元素的数量
stu_score = {
"zhangsan": 96,
"lisi": 11,
"wangwu": 88
}
num=len(stu_score)
print(num)
# 结果:3