Python?defaultdict教程示例詳解
1. 概述
在我們使用Python中的dict時,常常需要判斷某個關(guān)鍵字是否已經(jīng)在dict中,如果不存在則初始化,存在則進行另外的操作。例如統(tǒng)計一篇文章中所有單詞出現(xiàn)次數(shù)的代碼,大致寫法如下:
words_num = {} for word in words: if word not in words_num.keys(): words_num[word] = 1 else: words_num[word] += 1
這樣寫總是需要判斷key是否在dict中,不是很優(yōu)雅。
Python標準庫collections中defaultdict類可以很好的解決這個問題。這個類使用與dict幾乎一樣,除了可以在初始化時設置key的默認類型和數(shù)值。類的聲明格式為defaultdict(default_factory=None, /[, ...]),default_factory是一個Callable類型的變量。
例如,foo = defaultdict(int)表示foo中的key的默認類型是int,且默認值為int的默認值0,我們可以獲取任意的key,不需要手動初始化key:
>>> from collections import defaultdict >>> foo = defaultdict(int) >>> foo['a'] 0 >>> foo['b'] 0 >>> foo['whatever'] 0 >>> foo['a'] += 1 >>> foo['a'] 1
所以最開始的例子可以簡化為如下:
from collections import defaultdict words_num = defaultdict(int) for word in words: words_num[word] += 1
可以看到使用defaultdict后,代碼中只需要關(guān)注上層邏輯(統(tǒng)計單詞的出現(xiàn)次數(shù)),而不需要關(guān)注具體的語法的代碼實現(xiàn)(dict是否存在某個key,沒有的話xxx,有的話xxx),因此世界變得更美好了一些。
除了int外,用list,tuple,dict,set等作為變量也比較常見。除了內(nèi)置類型外,還可以自定義函數(shù),比如設置key的默認值為'China':
>>> from collections import defaultdict >>> def set_default_contry(): ... return "China" ... >>> person_from = defaultdict(set_default_contry) >>> person_from['張三'] 'China' >>> person_from['李四'] 'China' >>> person_from['Tim'] = 'USA' >>> person_from defaultdict(<function set_default_contry at 0x10896eca0>, {'a': 'China', '張三': 'China', '李四': 'China', 'Tim': 'USA'})
defauldict是一個簡單但很好用的功能,在日常的使用中還是能減少一些代碼復雜度的。希望這篇小文能給讓你寫代碼更容易,更開心。
以上就是Python defaultdict教程示例詳解的詳細內(nèi)容,更多關(guān)于Python defaultdict教程的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python操作mongodb數(shù)據(jù)庫的方法詳解
這篇文章主要介紹了Python操作mongodb數(shù)據(jù)庫的方法,結(jié)合實例形式詳細分析了Python下載、安裝pymongo及操作MongoDB數(shù)據(jù)庫相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2018-12-12pyside6-uic生成py代碼中文為unicode(亂碼)的問題解決方案
這篇文章主要介紹了如何解決pyside6-uic生成py代碼中文為unicode(亂碼)的問題,文中通過代碼和圖文介紹的非常詳細,對大家解決問題有一定的幫助,需要的朋友可以參考下2024-02-02基于OpenCV和Gradio實現(xiàn)簡單的人臉識別詳解
這篇文章主要為大家詳細介紹了如何基于OpenCV和Gradio實現(xiàn)簡單的人臉識別功能,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下2023-04-04python矩陣運算,轉(zhuǎn)置,逆運算,共軛矩陣實例
這篇文章主要介紹了python矩陣運算,轉(zhuǎn)置,逆運算,共軛矩陣實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05python實現(xiàn)對excel中需要的數(shù)據(jù)的單元格填充顏色
這篇文章主要介紹了python實現(xiàn)對excel中需要的數(shù)據(jù)的單元格填充顏色,文章圍繞主題展開詳細單元格填充介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-06-06