数据容器-字典
字典的定义,同样使用{ },不过存储的元素是一个个的键值对,如下:
使用{ }存储元素,一个元素是一个键值对
每一个键值对包含Key和Value(用冒号分隔)
键值对之间使用逗号分隔
Key和Value可以是任意类型的数据(key不可为字典)
Key不可重复,重复会对原有数据覆盖
字典不可用下标索引,而是通过Key检索Value
# 定义字典字面量:{key:value,key:value,......,key:value}
# 定义字典变量:
# my_dict = {key: value, key: value,......, key: value}
# 定义空字典
my_dict = {} # 空字典定义方式1
n_dict = dict() # 空字典定义方式2
# 记录学生成绩
stu_score = {"zhang": 99, "wang": 98, "li": 97}
# 字典同集合一样,不可以使用下标索引,但是字典可以通过Key值来取得对应的Value
print(stu_score["zhang"])
# 嵌套
# 字典的Key和Value可以是任意数据类型(Key不可为字典),所以字典是可以嵌套的
# 需求如下:记录学生各科的考试信息,字典可以里面嵌套字典,key值不能为字典
stu_score = {"zhang": {"语文": 90, "数学": 88, "英语": 95}, "wang": {"语文": 80, "数学": 89, "英语": 70},
"li": {"语文": 70, "数学": 91, "英语": 65}}
# 增加可读性
stu_score = {
"zhang": {"语文": 90, "数学": 88, "英语": 95},
"wang": {"语文": 80, "数学": 89, "英语": 70},
"li": {"语文": 70, "数学": 91, "英语": 65}
}
# 嵌套字典的读取
print(stu_score["zhang"]) # {'语文': 90, '数学': 88, '英语': 95}
print(stu_score["wang"]["数学"]) # 89
相关操作
- 新增元素
# 语法:字典[Key] = Value,结果:字典被修改,新增了元素
stu_score = {"zhang": 99, "wang": 98, "li": 97}
stu_score["yang"] = 89
print(stu_score) # {'zhang': 99, 'wang': 98, 'li': 97, 'yang': 89}
-
更新元素
# 语法:字典[Key] = Value,结果:字典被修改,元素被更新 # 注意:字典Key不可以重复,所以对已存在的Key执行上述操作,就是更新Value值 stu_score = { "zhang": 99, "wang": 98, "li": 97 } stu_score["li"] = 90 # 更新li对应的value值 print(stu_score) -------------------------------------------------------- # 我们可以利用更新语句创建新的字典 # 假设我们有一个列表: list1 = ['z', 'h', 'k'] # 定义一个空字典 dict1 = {} for i in range(len(list1)): dict1[i] = list1[i] print(dict1) # {0: 'z', 1: 'h', 2: 'k'}
-
删除元素
# 语法:字典.pop(Key),结果:获得指定Key的Value,同时字典被修改,指定Key的数据被删除
stu_score = {
"zhang": 99,
"wang": 98,
"li": 97
}
value = stu_score.pop("li") # 获得指定Key的Value
print(value) # 97
print(stu_score) # 字典被修改,{'zhang': 99, 'wang': 98}
-
清空字典
# 语法:字典.clear(),结果:字典被修改,元素被清空 stu_score = { "zhang": 99, "wang": 98, "li": 97 } stu_score.clear() # 字典被修改,元素被清空,结果:{} print(stu_score)
-
获取字典中所有的key
# 语法:字典.keys(),结果:得到字典中的全部Key stu_score = { "zhang": 99, "wang": 98, "li": 97 } keys = stu_score.keys() print(keys) # 结果dict_keys(['zhang', 'wang', 'li'])
-
遍历字典
# 语法1:for key in 字典.keys(): # 语法2:for key in 字典: # 临时变量key名字随意取,与语法一相比更加的简洁,结果一样 stu_score = { "zhang": 99, "wang": 98, "li": 97 } keys = stu_score.keys() for i in keys: # 只能for循环,字典不支持下标索引 print(f"姓名:{i},成绩:{stu_score[i]}")
-
计算字典中键值对的数量
# 语法:len(字典) # 结果:得到一个整数,表示字典内元素(键值对)的数量 stu_score = { "zhang": 99, "wang": 98, "li": 97 } print(len(stu_score)) # 得到字典内元素(键值对)的数量