Python dict和defaultdict使用實例解析
先看一個需求
from collections import defaultdict
"""
需求: 統(tǒng)計user_list中字母出現(xiàn)的次數(shù)
"""
user_dict = {}
user_list = ['A', 'B', 'C', 'A', 'C', 'C']
# 第一種方式
for item in user_list:
if item not in user_dict:
user_dict[item] = 1
else:
user_dict[item] += 1
print(user_dict) # {'A': 2, 'B': 1, 'C': 3}
# 第二種方式
user_dict = {}
user_list = ['A', 'B', 'C', 'A', 'C', 'C']
for item in user_list:
user_dict.setdefault(item, 0) # 如果user_dict無item這個key,添加{item:0} , 如果有,不管. 而且這個方法性能比第一種方式好
user_dict[item] += 1 # item的value值累加1
print(user_dict) # {'A': 2, 'B': 1, 'C': 3}
# 第三種方式.使用defaultdict
default_dict = defaultdict(int)
user_list = ['A', 'B', 'C', 'A', 'C', 'C']
for item in user_list:
default_dict[item] += 1 # 使用這種方式,代碼更簡單,性能也更好
print(default_dict) # defaultdict(<class 'int'>, {'A': 2, 'B': 1, 'C': 3})
defaultdict的使用



由上面的示例可知,defaultdict會根據(jù)創(chuàng)建實例參數(shù)的類型生成一個對應(yīng)類型的默認(rèn)值,
這對于dict類型的數(shù)據(jù)結(jié)構(gòu)而言,可以很好避免KeyError類型的錯誤 .
此外,我們還可以自定義defaultdict調(diào)用對象的數(shù)據(jù)結(jié)構(gòu),以滿足我們實際需要
def person():
'''自定義一個可調(diào)用對象'''
return {
'name': '',
'age': 0
}
default_dict = defaultdict(person)
default_dict['p']
pass

是不是很贊....
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python+Django在windows下的開發(fā)環(huán)境配置圖解
Python+Django在windows下的開發(fā)環(huán)境配置圖解教程,需要的朋友可以參考下。2009-11-11
Python wxpython模塊響應(yīng)鼠標(biāo)拖動事件操作示例
這篇文章主要介紹了Python wxpython模塊響應(yīng)鼠標(biāo)拖動事件操作,結(jié)合實例形式分析了Python使用wxpython模塊創(chuàng)建窗口、綁定事件及相應(yīng)鼠標(biāo)事件相關(guān)操作技巧,需要的朋友可以參考下2018-08-08
python實現(xiàn)從文件中讀取數(shù)據(jù)并繪制成 x y 軸圖形的方法
今天小編就為大家分享一篇python實現(xiàn)從文件中讀取數(shù)據(jù)并繪制成 x y 軸圖形的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10
Python3網(wǎng)絡(luò)爬蟲之使用User Agent和代理IP隱藏身份
這篇文章主要介紹了Python3網(wǎng)絡(luò)爬蟲之使用User Agent和代理IP隱藏身份,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11
閉包在python中的應(yīng)用之translate和maketrans用法詳解
這篇文章主要介紹了閉包在python中的應(yīng)用之translate和maketrans用法,是比較實用的技巧,需要的朋友可以參考下2014-08-08
Python 調(diào)用 Outlook 發(fā)送郵件過程解析
這篇文章主要介紹了Python 調(diào)用 Outlook 發(fā)送郵件過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-08-08

