字典定义
d={key1:value1,key2:value2,key3:value3,...}
字典无序,取值比较方便
字典增删改查
d={'name':'lucy','age':18,'sex':'girl','addr':'china'} #增 d['school']='yanda'#方法1:直接赋值 d.setdefault('weight','90kg')#方法二 setdefault(key,value) #改 d['school']='shifan'#如果key存在,修改它的值,如果不存在新增一个值 #删 d.pop('addr')#接收的key值如果不存在报错 del d['sex']#接收的key值如果不存在报错 del d #删除字典 d.clear()#清空字典内容 d.popitem()#随机删除一个。没有太大卵用 #查 print(d['name'])#如果写了不存在的key就报错 print(d.get('uname'))#get取值不存在,返None print(d.get('name','找不到'))#如果想返回提示语,可以在“,”后边添加 print(d.keys())#获取到所有的keys值 print(d.values())#获取到所有的values
字典遍历
d={'uname':'lsy','age':18,'sex':'girl','addr':'china'} #只遍历key for i in d : print(i) #遍历key和value #方法一:d.items() for k,v in d.items() : print(k,v) #缺点:items将字典转化成了数组,list取值比字典的慢 #方法二:同时取k-v,保留原来字典的取值速度快的特点,性能好 for k in d: print(k,d[k])#等价print(k,d.get(k))
字典嵌套
数组嵌套字典,字典再嵌套字典
stus=[ {'艾佳': {'age': 18, 'sex': 'boy', 'addr': 'china', '存款': {'建行': 80000, '工行': 800000,'农行':8000000}}}, {'萱萱': {'age': 19, 'sex': 'girl', 'addr': 'china', 'bag': {'lv': 8, 'xx': 80}},'爱马仕':1}, ] #想取出艾佳建行存款 print(stus[0]['存款']['建行']) #想取出萱萱lv包的个数 # print(stus[-1]['bag']['lv']) #计算艾佳总存款 count=0 for i in stus[0]['艾佳']['存款'].values(): count=count+i print(count) #打印萱萱有哪几种包包 print(stus[1]['萱萱']['bag'].keys())
字典嵌套字典嵌套数组
stus = { 'ybq': { 'age': 18, 'sex': '男', 'addr': '昌平区', 'money': 10000000, '金库': { '建行卡': 80000, '工商卡': 800000, '招商卡': 8000000 } }, 'tlx': { 'age': 19, 'sex': '女', 'addr': '昌平区', 'money': 10000000, '化妆品': ['六神','神仙水'] }, 'mpp': { 'age': 19, 'sex': '女', 'addr': '昌平区', 'money': 10000000, "bag": { 'lv': '一车', '鳄鱼':10 } }, } #计算ybq金库的总额 count=0 for i in stus['ybq']['金库'].values(): count=count+i print(count) #取出‘六神’ print(stus['tlx']['化妆品'][1])
字典实例--注册、登录
要求:注册要求有用户名、密码、确认密码,三者均不能为空,判断用户名是否存在;登录 校验非空,校验用户是否存在
all_user={}#定义一个空字典,用来放用户名密码 while True:#死循环,根据需求修改 uname=input('uname:').strip()#接收用户名,并删除用户名前后的空格 pwd=input('pwd:').strip()#接收密码,并删除密码前后的空格 cpwd=input('cpwd:').strip()#接收确认密码,并删除确认密码前后的空格 if uname and pwd and cpwd:#判断用户名、密码、确认密码是否为空 if uname in all_user:#判断用户名是否存在 print('用户名已存在,请重新输入') else: if pwd==cpwd:#用户名不存在的前提下,判断密码和确认密码是否相等 all_user[uname]=pwd#将用户名、密码加到all_user字典中 print('注册成功') break#注册成功结束循环 else: print('两次输入密码不一致') else: print('账号/密码不能为空') #登录 校验非空,校验用户不存在, while True: username=input('username:').strip() password =input('password:').strip() if username and password: if username in all_user: if password==all_user[username]: print('登录成功') break else: print('密码错误') else: print('账号未注册') else: print('用户名/密码不能为空')