字典的定义:
字典的定义,同样使用{},不过存储的元素是一个个的:键值对,如下语法:
# 定义字典字面量
{key:value, key:value, ........., key:value}
# 定义字典变量
my_dict = {key:value, key:value, ........., key:value}
# 定义空字典
my_dict = {} # 空字典定义方式1
my_dict = dict() # 空字典定义方式2
字典的特点:
- 可以容纳多个数据
- 可以容纳不同类型的数据
- 每一份数据是Key Value键值对
- 可以通过Key获取带Value,Key不可重复(重复会覆盖)
- 不支持下标索引
- 可以修改(增加或删除更新元素等)
- 支持for循环,不支持while循环
字典的注意事项:
- 键值对的key和value可以是任意类型(key不可为字典)
- 字典内的key不允许重复,重复添加等同于覆盖原有数据
- 字典不可用下标索引,而是通过key检索value
字典的常用操作
新增元素
语法:字典[key = value],结果字典被修改,新增了元素
my_dict = {"张三": 99, "李四": 66, "王五": 75, "赵六": 82}
print(my_dict)
my_dict["app"] = 50
print(f"字典新增了元素为{my_dict}")
结果:
{'张三': 99, '李四': 66, '王五': 75, '赵六': 82}
字典新增了元素为{'张三': 99, '李四': 66, '王五': 75, '赵六': 82, 'app': 50}
更新元素:
语法:字典[key = value],结果字典被修改,元素被更新
注意:字典内的key不允许重复,所以对已存在的key执行上述操作,就是更新value值
my_dict = {"张三": 99, "李四": 66, "王五": 75, "赵六": 82}
print(my_dict)
my_dict["张三"] = 50
print(f"字典更新了元素为{my_dict}")
结果:
{'张三': 99, '李四': 66, '王五': 75, '赵六': 82}
字典更新了元素为{'张三': 50, '李四': 66, '王五': 75, '赵六': 82}
定义嵌套字典
student_score_dict = {
"张三": {
"语文": 100,
"数学": 110,
"英语": 115,
}, "李四": {
"语文": 111,
"数学": 105,
"英语": 100,
}, "王五": {
"语文": 95,
"数学": 120,
"英语": 117,
}, "赵六": {
"语文": 89,
"数学": 98,
"英语": 118,
}
}
print(f"学生的考试成绩是:{student_score_dict}")
结果:
学生的考试成绩是:{'张三': {'语文': 100, '数学': 110, '英语': 115}, '李四': {'语文': 111, '数学': 105, '英语': 100}, '王五': {'语文': 95, '数学': 120, '英语': 117}, '赵六': {'语文': 89, '数学': 98, '英语': 118}}
从嵌套字典获取数据 value = 字典[key][key]
student_score_dict = {
"张三": {
"语文": 100,
"数学": 110,
"英语": 115,
}, "李四": {
"语文": 111,
"数学": 105,
"英语": 100,
}, "王五": {
"语文": 95,
"数学": 120,
"英语": 117,
}, "赵六": {
"语文": 89,
"数学": 98,
"英语": 118,
}
}
score = student_score_dict["王五"]["英语"]
print(f"获取王五的英语成绩:{score}")
结果:
获取王五的英语成绩:117
删除元素 字典.pop(key)
语法:字典.pop(key),结果:获取指定可以的value,通杀字典被修改,指定key的数据被删除
my_dict = {
"张三": 99,
"李四": 66,
"王五": 75,
"赵六": 82
}
value = my_dict.pop("张三")
print(f"字典中移除了一个元素,结果是:{my_dict}")
结果:
字典中移除了一个元素,结果是:{'李四': 66, '王五': 75, '赵六': 82}
清空元素 字典.clear()
语法:字典.clear(),结果:字典被修改,元素被清空
my_dict = {
"张三": 99,
"李四": 66,
"王五": 75,
"赵六": 82
}
my_dict.clear()
print(f"字典被清空了,内容是:{my_dict}")
结果:
字典被清空了,内容是:{}
获取全部的key值 字典.keys()
my_dict = {
"张三": 99,
"李四": 66,
"王五": 75,
"赵六": 82
}
my_key = my_dict.keys()
print(f"字典:{my_dict}\n里边全部的key值为{my_key}")
结果:
里边全部的key值为dict_keys(['张三', '李四', '王五', '赵六'])
遍历字典 for循环
字典没下标所以不能使用while循环
my_dict = {
"张三": 99,
"李四": 66,
"王五": 75,
"赵六": 82
}
# 方式1:通过获取到全部的key来完成遍历
my_key = my_dict.keys()
for key in my_key:
print(f"字典key的可以是:{key}")
print(f"字典value的可以是:{my_dict[key]}")
# 方式2:直接对字典进行for循环,每一次循环都是直接得到key
for key in my_dict:
print(f"2字典key的可以是:{key}")
print(f"2字典value的可以是:{my_dict[key]}")
结果:
字典key的可以是:张三
字典value的可以是:99
字典key的可以是:李四
字典value的可以是:66
字典key的可以是:王五
字典value的可以是:75
字典key的可以是:赵六
字典value的可以是:82
2字典key的可以是:张三
2字典value的可以是:99
2字典key的可以是:李四
2字典value的可以是:66
2字典key的可以是:王五
2字典value的可以是:75
2字典key的可以是:赵六
2字典value的可以是:82
统计字典内的元素数量 len(字典)
my_dict = {
"张三": 99,
"李四": 66,
"王五": 75,
"赵六": 82
}
print(f"字典:{my_dict}的长度为:{len(my_dict)}")
结果:
字典:{'张三': 99, '李四': 66, '王五': 75, '赵六': 82}的长度为:4
练习:
# 定义字典
my_dict = {
"王力宏": {
"部门": "科技部",
"工资": 3000,
"级别": 1
},
"周杰伦": {
"部门": "市场部",
"工资": 5000,
"级别": 2
},
"林俊杰": {
"部门": "市场部",
"工资": 7000,
"级别": 3
},
"张学友": {
"部门": "科技部",
"工资": 4000,
"级别": 1
},
"刘德华": {
"部门": "市场部",
"工资": 6000,
"级别": 2
}
}
print(f"全体员工当前信息如下:\n {my_dict}")
for a in my_dict:
if my_dict[a]["级别"] == 1:
my_dict[a]["级别"] = 2 # 将级别重新赋值为2
my_dict[a]["工资"] = my_dict[a]["工资"] + 1000 # 将工资加1000后重新存入字典
print(f"全体级别为1的员工完成升职加薪操作,操作后:\n {my_dict}")
结果:
全体员工当前信息如下:
{'王力宏': {'部门': '科技部', '工资': 3000, '级别': 1}, '周杰伦': {'部门': '市场部', '工资': 5000, '级别': 2}, '林俊杰': {'部门': '市场部', '工资': 7000, '级别': 3}, '张学友': {'部门': '科技部', '工资': 4000, '级别': 1}, '刘德华': {'部门': '市场部', '工资': 6000, '级别': 2}}
全体级别为1的员工完成升职加薪操作,操作后:
{'王力宏': {'部门': '科技部', '工资': 4000, '级别': 2}, '周杰伦': {'部门': '市场部', '工资': 5000, '级别': 2}, '林俊杰': {'部门': '市场部', '工资': 7000, '级别': 3}, '张学友': {'部门': '科技部', '工资': 5000, '级别': 2}, '刘德华': {'部门': '市场部', '工资': 6000, '级别': 2}}