Python 7天快速入门完整视频教程:https://www.bilibili.com/video/BV1o84y1Z7J1
Python 字典dict
字典dict
字典也是Python提供的一种常用的数据结构,它用于存放具有映射关系的数据。
字典的定义
比如有成绩表数据——语文:68,数学:98,英语: 76,这组数据看上去像两个列表,但这两个列表的元素之间有一定的关联关系。如果单纯使用两个列表来保存这组数据,则无法记录两组数据之间的关联关系。
为了保存具有映射关系的数据,Python提供了字典,字典相当于保存了两组数据,其中一组数据是关键数据,被称为key;另一组数据可通过key来访问,被称为 value。形象地看,字典中key和 value的关联关系如下图所示。
字典的定义;
字典赋值定义
dict1={ key:value , key:value , ... , key:value }
空字典定义
dict2={}
dict3=dict()
案例:
# 字典赋值定义
dict1 = {"语文": 68, "数学": 98, "英语": 76}
print(f"dict1={dict1},type={type(dict1)}")
# 空字典定义
dict2 = {}
dict3 = dict()
print(f"dict2={dict2},type={type(dict2)}")
print(f"dict3={dict3},type={type(dict3)}")
输出:
dict1={'语文': 68, '数学': 98, '英语': 76},type=<class 'dict'>
dict2={},type=<class 'dict'>
dict3={},type=<class 'dict'>
注意点:key不能重复,否则新的key:value会覆盖老的key:value
dict4 = {"语文": 68, "数学": 98, "英语": 76, "数学": 100}
print(f"dict4={dict4},type={type(dict4)}")
运行结果:
dict4={'语文': 68, '数学': 100, '英语': 76},type=<class 'dict'>
字典的嵌套
复杂业务逻辑下,我们可以通过字典的嵌套。
字典的key和value可以是任意数据类型,但是key不能是字典类型
我们举例,设计学生的成绩单。
dict5 = {
"张三": {"语文": 58, "数学": 38, "英语": 16},
"李四": {"语文": 78, "数学": 58, "英语": 96},
"王五": {"语文": 68, "数学": 98, "英语": 76}
}
print(f"dict5={dict5},type={type(dict5)}")
字典的常用方法
1,通过key值来获取对应的value 语法:字典["Key"] 也可以单引号,如果访问的key在字典里不存在,则报错;
增强方法:get("key"),根据key获取对应的value值。假如不存在,不报错,返回None
# 通过key值来获取对应的value
dict1 = {"语文": 68, "数学": 98, "英语": 76}
print(dict1["语文"])
print(dict1['数学'])
print(dict1["英语"])
print(dict1["体育"])
print(dict1.get("语文"))
dict2 = {
"张三": {"语文": 58, "数学": 38, "英语": 16},
"李四": {"语文": 78, "数学": 58, "英语": 96},
"王五": {"语文": 68, "数学": 98, "英语": 76}
}
print(dict2["张三"]["数学"])
print(dict2["王五"]['英语'])
2,新增或者修改元素 语法 字典["Key"]=Value 如果key不存在,就是新增,如果key存在,就是修改。
update("{key:value}") 功能一样
update("{key1:value1,key2:value2}") 但是可以一次操作多个键值对
dict3 = {"语文": 68, "数学": 98, "英语": 76}
# key不存在,新增元素
dict3["体育"] = 77
print(dict3)
# key存在,修改元素
dict3["数学"] = 55
print(dict3)
dict3.update({'语文': 10})
dict3.update({'计算机': 50})
print(dict3)
dict3.update({'语文': 20, '计算机2': 50})
print(dict3)
运行输出:
{'语文': 68, '数学': 98, '英语': 76, '体育': 77}
{'语文': 68, '数学': 55, '英语': 76, '体育': 77}
{'语文': 10, '数学': 55, '英语': 76, '体育': 77, '计算机': 50}
{'语文': 20, '数学': 55, '英语': 76, '体育': 77, '计算机': 50, '计算机2': 50}
3,删除元素。语法 字典.pop("Key") 字典中删除该key:value元素,然后方法返回该key的Value
dict4 = {"语文": 68, "数学": 98, "英语": 76}
print(dict4.pop("数学"))
print(dict4)
运行输出:
98
{'语文': 68, '英语': 76}
4,清空元素。语法:clear()
dict5 = {"语文": 68, "数学": 98, "英语": 76}
dict5.clear()
print(dict5)
5,获取所有key。语法 字典.keys()。返回值类型的是 dict_keys 类对象
dict6 = {"语文": 68, "数学": 98, "英语": 76}
print(f"keys={dict6.keys()},type={type(dict6.keys())}")
运行输出:
keys=dict_keys(['语文', '数学', '英语']),type=<class 'dict_keys'>
6,遍历字典 先获取字典的keys,然后遍历keys,通过key获取字典值
dict7 = {"语文": 68, "数学": 98, "英语": 76}
keys = dict7.keys()
for key in keys:
value = dict7[key]
print(key, value)
运行输出:
语文 68
数学 98
英语 76
遍历方式2 遍历字典,每次拿到的也是key 以后我们就用这种简单方式,不用获取keys
for key in dict7:
value = dict7[key]
print(key, value)
运行输出:
语文 68
数学 98
英语 76
7,统计字典元素的总数量,len(字典)
dict8 = {"语文": 68, "数学": 98, "英语": 76}
print(len(dict8))
作业:
dict1 = { "张三": {"语文": 58, "数学": 38, "英语": 16}, "李四": {"语文": 78, "数学": 58, "英语": 96}, "王五": {"语文": 68, "数学": 98, "英语": 76} }
通过循环嵌套,打印出所有学生的各科成绩。