字典和字典操作
1、定义字典
1 dic={ 2 'name':'xiaojun', 3 'sex':'男', 4 'height':'185', 5 'age':18, 6 'email':'abc@qq.com', 7 'addr':'火星', 8 'id':1 9 }
- 使用大括号{}定义,每个值用“,”隔开,key:value形式
- 字典是无序的,因为它没有下标,用key来当索引,所以是无序的,取值速度快
- 字典的key必须是唯一的,因为它是通过key来进行索引的,如果重复最后的一个键值对会替换前面的,所以key不能重复,天生就去重
2、字典的增删改查
2.1 增
1 #add 两种方式 2 stus={} 3 stus['name']='小军' #增加 4 stus['name']='海龙' #name修改为“海龙” 5 stus.setdefault('name','杨帆') #如果key已经存在,就不动它;没有的话,添加 6 stus.setdefault('sex','nan') 7 stus.setdefault('addr','beijing') 8 stus.setdefault('email','13e@aa.com') 9 stus.setdefault('phone','2346465') 10 print(stus)
运行结果:
{'addr': 'beijing', 'sex': 'nan', 'phone': '2346465', 'name': '海龙', 'email': '13e@aa.com'}
2.2 改
1 #修改 即再次赋值 2 stus={'addr': 'beijing', 'sex': 'nan', 'phone': '2346465', 'name': '海龙', 'email': '13e@aa.com'} 3 stus['sex']='nv'
2.3 删除
两种方式:del 和 pop
1 #删 删除不存在的key会报错 2 del stus['phone'] 3 stus.pop('age') 4 stus.popitem() #随机删除
2.4 查询
两种方式:
- stus['sex']
- stus.get('sex')
1 # #查询 2 stus={'addr': 'beijing', 'sex': 'nan', 'phone': '2346465', 'name': '海龙', 'email': '13e@aa.com'} 3 print(stus['sex']) #如果不存在会报错 4 print(stus.get('sex')) #如果不存在的话,返回none,不会报错 5 print(stus.get('sex','男')) #如果sex不存在,返回默认值'男' 6 email in stus #email是否存在stus中,返回true或false
3、字典内置方法
1 stus={'addr': 'beijing', 'sex': 'nan', 'phone': '2346465', 'name': '海龙', 'email': '13e@aa.com'} 2 print(stus.keys()) #取出所有key 3 print(stus.values()) #取出所有value 4 stus.update({'money':10000}) #更新字典值,如果key存在的话,就更新,不存在的话就添加 5 print(stus.items()) #将字典转成list
4、遍历字典
1 stus={'addr': 'beijing', 'sex': 'nan', 'phone': '2346465', 'name': '海龙', 'email': '13e@aa.com'} 2 for k in stus: 3 print(k,'===>',stus.get(k)) 4 5 for k,v in stus.items(): 6 print(k,'==>',v)
运行结果:
email ===> 13e@aa.com sex ===> nan addr ===> beijing phone ===> 2346465 name ===> 海龙 email ==> 13e@aa.com sex ==> nan addr ==> beijing phone ==> 2346465 name ==> 海龙
5、字典嵌套
1 all_stus={ 2 'xiaojun': 3 { 4 'name':'xiaojun', 5 'sex':'男', 6 'height':'185', 7 'age':18, 8 'email':'abc@qq.com', 9 'addr':'火星', 10 'id':1, 11 'cars':["牧马人",'911','野马','劳斯莱斯'] 12 }, 13 'hailong': 14 { 15 'name':'hailong', 16 'sex':'男', 17 'height':'185', 18 'age':12, 19 'email':'abc@qq.com', 20 'addr':'火星', 21 'id':2 22 }, 23 'yangfan': 24 { 25 'name': 'hailong', 26 'sex': '男', 27 'height': '185', 28 'age': 12, 29 'email': 'abc@qq.com', 30 'addr': '火星', 31 'id': 3, 32 'bags':{ 33 'qianbao':['lv','ysl'], 34 'beibao':['coach','abc'] 35 } 36 } 37 } 38 all_stus['xiaojun']['cars'].append('五菱宏光') #给xiaojun添加一个car 39 print(len(all_stus['xiaojun']['cars'])) #统计xiaojun有多少个car len()函数 40 all_stus['yangfan']['sex']='nv' #改yangfan的sex 41 print(all_stus['yangfan']['sex']) 42 all_stus['yangfan']['bags']['qianbao'].pop(0) #删除lv 43 all_stus['yangfan']['bags']['beibao'].remove('abc') #删除abc