python库整理:collections.defaultdict
生活随笔
收集整理的這篇文章主要介紹了
python库整理:collections.defaultdict
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Python中通過Key訪問字典,當Key不存在時,會引發‘KeyError'異常。(之前dict里面的解決方法是使用get函數設置默認值)
dit={'yellow': 3, 'blue': 4, 'red': 1} dit['green'] #KeyError: 'green'dit.get('green',10) #第二個參數為,如果值不存在,返回的默認值 #10我們也可以使用collections類中的defaultdict()方法來為字典提供默認值。該函數返回一個類似字典的對象。
defaultdict是Python內建字典類(dict)的一個子類,它重寫了方法_missing_(key),增加了一個可寫的實例變量default_factory。
實例變量default_factory被missing()方法使用,如果該變量存在,則用以初始化構造器,如果沒有,則為None。其它的功能和dict一樣。
我們先看一個例子:
s=[('yellow',1),('blue',2),('yellow',3),('blue',4),('red',1)]我們希望把s中的信息整理成字典,每個顏色的數字放在這個顏色對應的列表中
以下兩種方法都是不行的。新的值會覆蓋掉老的值
dict(s) #{'yellow': 3, 'blue': 4, 'red': 1}d2=dict() for k,v in s:d2[k]=v d2 #{'yellow': 3, 'blue': 4, 'red': 1}?
?
如果我們不用defaultdict的話,可以用下面兩種方法來實現
d3=dict() for k,v in s:if(k in d3):d3[k].append(v)else:d3[k]=[v] d3 {'yellow': [1, 3], 'blue': [2, 4], 'red': [1]}d4=dict() ''' setdefault和get一樣,是返回字典的鍵值, 不過和get不一樣的是,在字典中不包含指定的項的時候, 添加指定的鍵值對(如果不指定鍵值的話,默認為None) ''' for k,v in s:d4.setdefault(k,[]).append(v) d4 #{'yellow': [1, 3], 'blue': [2, 4], 'red': [1]}?
使用defaultdict
?
如果defaultdict的參數是int的話,那么就和在setdefault里面設置默認參數為0是一樣的
s = 'Chinese' d = defaultdict(int) for k in s:d[k] += 1 d #defaultdict(int, {'C': 1, 'h': 1, 'i': 1, 'n': 1, 'e': 2, 's': 1})d1 = dict() for k in s:d1.setdefault(k,0)+=1 #這樣就是錯的,SyntaxError: can't assign to function call?
總結
以上是生活随笔為你收集整理的python库整理:collections.defaultdict的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据库笔记目录
- 下一篇: GNN笔记: random walk