使用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
