描述:
Python 字典 setdefault() 函数和get() 方法类似, 如果键不存在于字典中,将会添加键并将值设为默认值。
注意:setdefault() 返回的键如果不在字典中,会添加键(更新字典)
语法:
dict.setdefault(key,default = None)
参数
key - 这是要搜索的键。
default - 这是在没有找到键的情况下则返回此值。
返回值
此方法返回字典中可用的键值,如果给定键不可用,则返回提供的默认值。
案例:
>>>dict ={'name':'小明','sex':'男'}
>>> print "Value :%s" % dict.setdefault('name','无') #存在键name
Value :小明
>>> print "Value :%s" % dict.setdefault('age','0')#不存在键age
Value :0
>>> dict
{'age': '0', 'name': '\xd0\xa1\xc3\xf7', 'sex': '\xc4\xd0'}#age加了进去,字典是无序的。
实例:
需求:通过过滤条件查数据库,查出来了部分字段的值,放入一个字典,这个字典的key为student_id,将这些值放入一个新的字典,key相同,没有的字段赋值默认值,
一共有下面这么多字段,
['status','thirty_minute_time','five_minute_time','first_attend_time']
res_dict为查出来的数据,是一个字典,key为student_id
举个例子,比如res_dict={'123456':{'status':3}}
final_dict={}
for key in res_dict:
final_dict.setdefault(key,{'status':-1,'thirty_minute_time':-1,'five_minute_time':-1,'first_attend_time':-1})
if 'status' in res_dict[key]:
final_all_dict[key]['status']=res_dict[key]['status']
if 'thirty_minute_time' in res_dict[key]:
final_all_dict[key]['thirty_minute_time']=res_dict[key]['thirty_minute_time']
if 'five_minute_time' in res_dict[key]:
final_all_dict[key]['five_minute_time']=res_dict[key]['five_minute_time']
if 'first_attend_time' in res_dict[key]:
final_all_dict[key]['first_attend_time']=res_dict[key]['first_attend_time']
处理之后
final_dict={'123456':{'status':3,'thirty_minute_time':-1,'fiva_minute_time':-1,'first_attend_time':-1}}