python基础篇 03-字典基本操作
字典 增 、删、改、查,遍历value key 判断key是否存在
l = ['xiaohei','hahe','112342','北京','29'] d = { 'username':'xiaohei', 'id':1, 'grade':'hahe', 'addr':'北京', 'age':18 } # 新增 d['addr'] = 'shanghai' d.setdefault('age',38) #如果key已经存在了,则返回原来的值;如果key不存在,则insert key value为default,并返回值为default值 # setdefault是设置某个key的时候判断key是否已存在,如果存在,则保留原来的值并返回原来的value值,如果key不存在,则新增key并设置value为defalut,返回default # 而defaultdict 是初始化字典类型的变量时 给所以key的默认值,当dd[key] key不存在时不会报key error错误,返回默认值 from collections import defaultdict cc = defaultdict({}) value = cc['name'] # 返回的时{}空字典 # dict.fromkeys(iterable,default_value) # 栗子 new_list = ["jack", "jerry"] new_dict = dict.fromkeys(new_list,{"company":"home"}) # 修改 d['addr'] = 'shanghai' # 取值 print(d['addr']) # 此中方法 最好不要用 如果key不存在,则容易抛异常; print(d.get('sex','男')) # 如果key存在,则取出key中的值,如果key不存在,则返回给定的值; # #删除 d.pop('username') # key不存在,则抛异常KeyError del d['addr'] # key不存在,则抛异常KeyError print(d.keys()) # 字典中所有的key都取出来 print(d.values()) # 字典中所有的value都取出来 # 更新一个key-value,给字典增加key-value # update方法中入参为一个可迭代对象d.update(iterable),key=value/[(aa,bb)]/((aa,bb),)/{"key":"value"} d.update(a=1,b=2) d.update(a=1,b=2) d.update((("name","haha"),)) d.update([("name1","haha1")]) d.update({"name2":"haha2"}) # 清空字典 d.clear()#清空 users = { 'fd':'123455', 'xzh':'456789' } # 遍历获取key username = 'fd' print(d.keys()) # keys()的方法是先把key捞出来,然后放在list中 print(username in users.keys()) # keys()的方法是先把key捞出来,然后放在list中 print(username in users) #判断这个key是否存在的 # 获取 key-value print(d.items()) #把字典转换为二维数组了 # 输出 [('username', 'xiaohei'), ('id', 1), ('grade', '天马座'), ('addr', '北京'), ('age', 18), ('a', 1), ('b', 2)] for k,v in d.items(): print(k,v) # 循环访问 key for k in d: #循环 是 字典中的key 推荐使用此种方式 print(k,d.get(k))
例子1:
users = { 'fd':'1234', 'lhy':'456' } for i in range(3): username = input('username:').strip() password = input('password:').strip() cpwd = input('pwd:').strip() if username =='' or password =='' or cpwd == '': print('账号/密码不能为空') elif password != cpwd: print('两次输入的密码不一致') elif username in users: print('账号已经存在') else: users[username] = password print('注册成功!') break else: print('错误次过多') print(users)
例子2:
info = { 'lgy':{ 'age':18, 'addr':'beijing', 'cars':['bmw','ben-z','audi'] }, 'fd':{ 'house':{ 'bj':['海淀区','昌平区','朝阳区','西城区'], 'sh':['静安区','闸北区'] }, 'money':5000 } } #lgy,又买了一辆 五菱宏光 #fd,卖了北京的 昌平区的房子,钱增加了 4000000 info['lgy']['cars'].append('五菱宏光') info['fd']['house']['bj'].remove('昌平区') info['fd']['house'].pop('sh') # info['fd']['money'] = info['fd']['money'] + 4000000 info['fd']['money'] += 4000000 print(info)