日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python库整理:collections.defaultdict

發布時間:2025/4/5 python 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

d=defaultdict(list) #參數為defaultdict屬性的類型for k,v in s:d[k].append(v) ''' 當字典中沒有的鍵第一次出現時,default_factory自動為其返回一個空列表 list.append()會將值添加進新列表; 再次遇到相同的鍵時,list.append()將其它值再添加進該列表。 ''' a=d.items()print(d) #defaultdict(<class 'list'>, {'yellow': [1, 3], 'blue': [2, 4], 'red': [1]}) print(a) #dict_items([('yellow', [1, 3]), ('blue', [2, 4]), ('red', [1])]) print(dict(a)) #{'yellow': [1, 3], 'blue': [2, 4], 'red': [1]}

?

如果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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。