Python词典设置默认值小技巧
使用defaultdict为词典设置默认值
测试代码
from collections import defaultdictcn = defaultdict(list)print cncn['abc'].append('123')print cncn['abc'].append('456')print cnbn = defaultdict(int)bn['abc']=1print bnbn['abc']+=1print bn
运行结果
defaultdict(<type 'list'>,{})defaultdict(<type 'list'>,{'abc':['123']})defaultdict(<type 'list'>,{'abc':['123','456']})defaultdict(<type 'int'>,{'abc':1})defaultdict(<type 'int'>,{'abc':2})
默认词典的值即为list -> [] 或者 int -> 0 关键是能一次性设置所有的值,包括新值,速度很快。
使用setdefault为词典设置默认值
测试代码
cn ={}cn.setdefault('123',[]).append('123')print cncn.setdefault('123',[]).append('456')print cn
运行结果
{'123':['123']}{'123':['123','456']}
一次只能设置一个值,并且运行速度没有defaultdict快
通过fromkeys设置多个键的值
用法:dict.fromkeys(seq[, value])),value默认是None
说明:创建并返回一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值(默认为None)
测试代码
test_list=['123','456','789']cn ={}.fromkeys(test_list,'abc')print cn
运行结果
{'123':'abc','789':'abc','456':'abc'}
//TODO 为何以下代码返回为空词典??
test_list=['123','456','789']cn ={}cn.fromkeys(test_list,'abc')print cn
浙公网安备 33010602011771号