一、字典的特点
""" 字典:通过键对象,获取对应的值 特点:“键”是任意不可变数据,比如:整数,浮点数,字符串,元组 但是:列表、字典,集合这些可变对象,不能作为键使用,并且“键”不能重复 """
二、字典的创建
2.1 第一种方式
# 第一种方式 a1 = {'name':'chu','age':18,'job':'teacher'} print(a1) # {'name': 'chu', 'age': 18, 'job': 'teacher'}
2.2 第二种方式
# 第二种方式 a2 = dict(name= 'chu',age=18) print(a2) # {'name': 'chu', 'age': 18}
2.3 第三种方式
# 第三种方式 a3 = [('name','chu'),('age',18)] print(dict(a3)) # {'name': 'chu', 'age': 18}
2.4 第四种方式zip()
# 第四种方式zip() k = ['name','age','job'] v = ['chu',18,'teacher'] a4 = dict(zip(k,v)) print(a4) # {'name': 'chu', 'age': 18, 'job': 'teacher'}
2.5 通过fromkeys()创建值为空的字典
# 通过fromkeys()创建值为空的字典 a5 = dict.fromkeys(['name','age','job']) print(a5) # {'name': None, 'age': None, 'job': None}
三、字典的创建
b1 = {'name':'chu','age':18,'job':'teacher'}
3.1 一般访问,键不存在时,报错
# 3.1 一般访问,键不存在时,报错 print(b1['name']) # chu # print(b1['aaaaa']) # KeyError: 'aaaaa'
3.2 通过get()访问,键不存在时,默认返回None,也可自定义返回值
# 3.2 通过get()访问,键不存在时,默认返回None,也可自定义返回值 print(b1.get('name')) # chu print(b1.get('aaaa')) # None print(b1.get('aaaa',"此键不存在!")) # 此键不存在!
3.3 列出所有的键值对 items()
# 3.3 列出所有的键值对 items() print(b1.items()) # dict_items([('name', 'chu'), ('age', 18), ('job', 'teacher')])
3.4 列出所有的键keys(),值values()
# 3.4 列出所有的键keys(),值values() print(b1.keys()) # dict_keys(['name', 'age', 'job']) print(b1.values()) # dict_values(['chu', 18, 'teacher'])
3.5 len() 字典中有多少个键值对
# 3.5 len() 字典中有多少个键值对 print(len(b1)) # 3
3.6 检测一个“键”是否存在于字典中
# 3.6 检测一个“键”是否存在于字典中 print("name" in b1) # True
四、字典元素的添加,修改,删除
4.1 添加,如果添加的键存在,则会覆盖旧的键,如果不存在,新增键值对
# 4.1 添加,如果添加的键存在,则会覆盖旧的键,如果不存在,新增键值对 print("------------------------添加,修改,删除------------------------------") b2 = {'name':'chu','age':18,'job':'teacher'} b2["address"] = "三元桥一号院" print(b2) # {'name': 'chu', 'age': 18, 'job': 'teacher', 'address': '三元桥一号院'} b2["name"] = "baobao" print(b2) # {'name': 'baobao', 'age': 18, 'job': 'teacher', 'address': '三元桥一号院'}
4.2 update() 将新字典中的的所有键值对全部添加到旧的字典中,如果key重复,则直接覆盖
# 4.2 update() 将新字典中的的所有键值对全部添加到旧的字典中,如果key重复,则直接覆盖 x1 = {'name':'chu','age':18,'job':'teacher'} x2 = {'name1':'chu','age1':18,'job':'teacher01'} x1.update(x2) print(x1) # {'name': 'chu', 'age': 18, 'job': 'teacher01', 'name1': 'chu', 'age1': 18} print(x2) # {'name1': 'chu', 'age1': 18, 'job': 'teacher01'}
4.3 del():删除字典中的值 pop(): 删除字典中的值并将值返回 clear():清空字典 popitem():随机删除和返回该键键值对
# 4.3 del():删除字典中的值 pop(): 删除字典中的值并将值返回 clear():清空字典 popitem():随机删除和返回该键键值对 b3 = {'name': 'chu', 'age': 18, 'job': 'teacher', 'address': '三元桥一号院'} del(b3['name']) print(b3) # {'age': 18, 'job': 'teacher', 'address': '三元桥一号院'} bb = b3.pop('age') print(b3) # {'job': 'teacher', 'address': '三元桥一号院'} print(bb) # 18 b4 = {'name': 'chu', 'age': 18, 'job': 'teacher', 'address': '三元桥一号院'} print(b4.popitem()) # ('address', '三元桥一号院') print(b4.popitem()) # ('job', 'teacher') print(b4.popitem()) # ('age', 18) print(b4.popitem()) # ('name', 'chu') # print(b4.popitem()) # KeyError: 'popitem(): dictionary is empty'
五、序列解包
5.1 序列解包
# 5.1 序列解包 a,b,c = 10,20,30 a1,b1,c1 = (20,30,40) (a2,b2,c2) = (40,50,60) [a3,b3,c3] = [1,2,3] print(a,b,c) # 10 20 30 print(a1,b1,c1) # 20 30 40 print(a2,b2,c2) # 40 50 60 print(a3,b3,c3) # 1 2 3
5.2 字典的序列解包时,默认是对键进行操作
如果对值进行操作,x.values()
如果对键值对进行操作,x.items()
# 5.2 字典的序列解包时,默认是对键进行操作 # 如果对值进行操作,x.values() # 如果对键值对进行操作,x.items() b5 = {'name': 'chu', 'age': 18, 'job': 'teacher', 'address': '三元桥一号院'} x,y,z,o = b5 print(x,y,z,o) # name age job address x1,y1,z1,o1 = b5.values() print(x1,y1,z1,o1) # chu 18 teacher 三元桥一号院 x2,y2,z2,o2 = b5.items() print(x2,y2,z2,o2) # ('name', 'chu') ('age', 18) ('job', 'teacher') ('address', '三元桥一号院')