1、字典都是key-value 形式
有以下两个特点:取数据方便,速度快
字典是无序的
2、查询
1)查询一
info = {'name':'刘佳','sex':'女','addr':'地球','age':18} print(info.get('name'))
取对应key的value值,结果为:刘佳
如果key值不存在,不会报错,会返回none,如下图
info = {'name':'刘佳','sex':'女','addr':'地球','age':18} print(info.get('phone'))
phone这个key是没有的,所以返回的value是none
2)查询二
获取对应key的value值时,在key后面可跟一个value,如果key存在,则输出的还是字典中key对应的value
info = {'name':'刘佳','sex':'女','addr':'地球','age':18} print(info.get('name',110))
因为name这个key在字典中存在,所以输出的value是刘佳
如果key不存在,如下
info = {'name':'刘佳','sex':'女','addr':'地球','age':18} print(info.get('phone',110))
输出的结果为:110
3)查询三
info = {'name':'刘佳','sex':'女','addr':'地球','age':18} print(info['name'])
该种查询方式,key存在的话,与第一二种方式相同,输出为:刘佳
如果key不存在,则会报错
3、新增
1)新增一
info = {'name':'刘佳','sex':'女','addr':'地球','age':18} info['phone']=1244564 #增加一个key-value print(info)
为该字典增加一个key-value,输出结果为:
{'name': '刘佳', 'sex': '女', 'addr': '地球', 'age': 18, 'phone': 1244564}
2)新增二
info = {'name':'刘佳','sex':'女','addr':'地球','age':18} info.setdefault('money','200w') #增加一个key-value print(info)
为该字典增加一个key-value,输出结果为:
{'name': '刘佳', 'sex': '女', 'addr': '地球', 'age': 18, 'money': '200w'}
4、修改
1)修改一
如果key存在,不会改变value的值,即不能修改成功,该方法其实就是新增有效
info = {'name':'刘佳','sex':'女','addr':'地球','age':18} info.setdefault('name','emily') #如果key存在,不会修改原来key的值 print(info)
输出结果为:
{'name': '刘佳', 'sex': '女', 'addr': '地球', 'age': 18}
2)修改二
如果key存在,会修改value的值
info = {'name':'刘佳','sex':'女','addr':'地球','age':18} info['name']='emily' #如果key存在的话,会修改原来key的值 print(info)
输出结果为:
{'name': 'emily', 'sex': '女', 'addr': '地球', 'age': 18}
5、删除
1)指定key删除
info = {'name':'刘佳','sex':'女','addr':'地球','age':18} info.pop('name') #指定key来删除 print(info)
或
info = {'name':'刘佳','sex':'女','addr':'地球','age':18} del info['name'] #指定key来删除 print(info)
输出结果都为:
{'sex': '女', 'addr': '地球', 'age': 18}
2)随机删除一个key
info = {'name':'刘佳','sex':'女','addr':'地球','age':18} info.popitem() #随机删除一个key print(info)
输出结果也可能是任意key-value值
3)清空字典
info = {'name':'刘佳','sex':'女','addr':'地球','age':18} info.clear() #清空字典 print(info)
输出结果就是整个字典清空 {}
6、字典方法:获取key或value
info = {'name':'刘佳','sex':'女','addr':'地球','age':18} print(info.values()) #获取字典所有value print(info.keys()) #获取字典所有key print(info.items()) #获取字典所有key-value
输出结果:
dict_values(['刘佳', '女', 18, '地球']) dict_keys(['name', 'sex', 'age', 'addr']) dict_items([('name', '刘佳'), ('sex', '女'), ('age', 18), ('addr', '地球')])
7、嵌套字典&嵌套数组
people = { '田雨':{ 'age':18, 'money':200000, 'clothes':'100套', 'hzp':'n多', 'shoes':['nike','addis','lv','chanle'] }, '张流量':{ '金库':'2000w', 'house':['三环一套','4环2套'], 'cars': { 'japan':['普拉多','兰德酷路泽'], 'usa':['林肯','凯迪拉克','福特'], 'china':['五菱宏光','qq','红旗'] } } }
查找张流量所有的USA的车,可以这样查
print(people['张流量']['cars']['usa'])
查找张流量的qq车,应该这样查
print(people['张流量']['cars']['china'][1])
给田雨增加200块钱:
people['田雨']['money'] += 200 print(people['田雨']['money'])
给田雨增加一双匡威鞋:
people['田雨']['shoes'].append('匡威') print(people['田雨']['shoes'])
8、循环
直接循环字典,就是循环字典的key
字典依然是上文提到的people的字典,循环字典
for p in people: print(p)
输出结果为:田雨 张流量
循环时同时取key和value的值
for k,v in people.items(): #循环的时候,同时取key 和 value print(k ,v)
输出结果就是字典people的整个数据
9、小练习
user = {'emily':'122123', 'emilyq':'23124'} print('emily' in user) #字典里面用in来判断的话,知识判断key是否存在,存在返回true,不存在返回false for i in range(3): username = input('请输入账号:').strip() passwd = input('请输入密码:').strip() cpasswd = input('请确认密码:').strip() if username=='' or passwd=='' or cpasswd=='': print('用户名/密码不能为空') elif username in user: print('用户名已经被注册过了') elif passwd!=cpasswd: print('两次密码输入的不一样') else: print('恭喜,注册成功') #user.setdefault(username,passwd) user[username]=passwd else: print('输入错误次数过多')