字典属于K-V形式,即key——value。字典也可以循环。优点:速度快,好取值。字典是无序的。比列表快,列表要从前往后顺序查找
hailong = {
'Name':'hailong',
'Sex':'男',
'hengao':'185',
'age':18,
'email':'acb@qq.com',
'addr':'火星',
'id':2
}
for i in hailong: #字典循环显示的都是key
print('key',i) #显示的key
print('value',hailong[i]) #显示的value
print(i,'===>',hailong.get(i)) #显示k和v
--------------------------------------------------------------------------------
for k,v in hailong.items():
print(k,v)
'''
Name hailong
Sex 男
hengao 185
age 18
email acb@qq.com
addr 火星
id 2
'''
--------------------------------------------------------------------------------
字典的增删改查
增:
hailong['zhuzhi'] = '北京'
print(hailong)
#{'name': 'hailong', 'sex': '男', 'hengao': '185', 'age': 18, 'email': 'acb@qq.com', 'addr': '火星', 'id': 2, 'zhuzhi': '北京'}
#不存在的增加到最后
hailong['age']=30
print(hailong)
#{'name': 'hailong', 'sex': '男', 'hengao': '185', 'age': 30, 'email': 'acb@qq.com', 'addr': '火星', 'id': 2, 'zhuzhi': '北京'}
#存在的重新赋值,所以没有修改,修改就是重新赋值
name = {'zhuzhi':"北京"} #新字典name
hailong.update(name) #字典合并
print(hailong)
#{'name': 'hailong', 'sex': '男', 'hengao': '185', 'age': 18, 'email': 'acb@qq.com', 'addr': '火星', 'id': 2, 'zhuzhi': '北京'}
stus = {} #设置一个字典stus
stus['name'] = '小军' #增加
stus['name'] = '海龙' #只能增加一个值,按顺序重新赋值
stus.setdefault('name','杨帆')#如果这个key已经存在,那么就不修改它的值了
#print(stus) {'name': '海龙'} 出的结果只能是海龙
stus.setdefault('age',18) #之前这个key不存在,所以赋值为18
print(stus) #{'name': '海龙', 'age': 18}
--------------------------------------------------------------------------------
删:
hailong.pop('age')
print('删除age',hailong)
#删除age {'name': 'hailong', 'sex': '男', 'hengao': '185', 'email': 'acb@qq.com', 'addr': '火星', 'id': 2}
#pop删除不存在的key会报错
#k-v是成双存在的,不存在只留key,删除value的情况,可以赋值为空
hailong.popitem() #随机删除
del hailong['age'] #del 删除
del hailong #就是删除整个字典
--------------------------------------------------------------------------------
查:
print(hailong.values()) #只显示value值
#dict_values(['hailong', '男', '185', 18, 'acb@qq.com', '火星', 2])
print(hailong.keys()) #只显示key
#dict_keys(['name', 'sex', 'hengao', 'age', 'email', 'addr', 'id'])
print(hailong['xixi']) #当没有此key时,运行会报错
print(hailong.get('xixi')) # 使用get查找-不报错,会输出成None
print(hailong.get('xixi','hhh')) #如果没有还可以设置默认值,设定xixi的值为hhh
--------------------------------------------------------------------------------
清空字典:
hailong.clear()
--------------------------------------------------------------------------------
点以后的都是方法,用小括号
比如hailong.get('xixi','hhh')
--------------------------------------------------------------------------------
字典嵌套多层取值:
all_stus = {
'xiaojun':
{
'sex': '男',
'shengao': '185',
'age': 18,
'email': 'acb@qq.com',
'addr': '火星',
'id': 1,
'cars':['牧马人','911','野马','劳斯莱斯']
#五菱宏光
},
'hailong':{
'sex': '男',
'shengao': '185',
'age': 18,
'email': 'acb@qq.com',
'addr': '火星',
'id': 2
},
'yangfan':{
'sex': '男',
'shengao': '185',
'age': 18,
'email': 'acb@qq.com',
'addr': '火星',
'id': 3,
'bags':{
'qianbao':['lv','ysl'],
'beibao':['coach','abc']
}
}
}
all_stus['xiaojun']['cars'].append('五菱宏光')
print(all_stus) #增加了那辆车
print(len(all_stus['xiaojun']['cars'])) #xiaojun一共有几辆车
all_stus['yangfan']['sex'] = '女'
print(all_stus) #重新赋值
all_stus['yangfan']['bags']['qianbao'].remove('lv') #删除lv
all_stus['yangfan']['bags']['qianbao'].pop(0) #同上