Python標準庫defaultdict模塊使用示例
更新時間:2015年04月28日 09:08:57 投稿:junjie
這篇文章主要介紹了Python標準庫defaultdict模塊使用示例,本文講解了如何使用defaultdict給字典value元素添加默認類型以及defaultdict的兩個使用小案例,需要的朋友可以參考下
Python標準庫中collections對集合類型的數(shù)據(jù)結構進行了很多拓展操作,這些操作在我們使用集合的時候會帶來很多的便利,多看看很有好處。
defaultdict是其中一個方法,就是給字典value元素添加默認類型,之前看到過但是沒注意怎么使用,今天特地瞅了瞅。
首先是各大文章介紹的第一個例子:
復制代碼 代碼如下:
import collections as coll
def default_factory():
return 'default value'
d = coll.defaultdict(default_factory, foo='bar')
print 'd:',d
print 'foo=>', d['foo']
print 'foo=>', d['bar'] #key為'bar'的元素不存在,會有一個默認值
輸出結果是這樣的:
復制代碼 代碼如下:
d: defaultdict(<function default_factory at 0x022E6E70>, {'foo': 'bar'})
foo=> bar
foo=> default value
結論:這里可以看到,當我們?nèi)∽值渲幸粋€沒有的key的時候就會自動根據(jù) default_factory生成一個value,類似于 d.get('bar','default value')
一個對比的例子:
如果一個字典中有個map的value是一個set,往這個set連續(xù)添加兩個元素,使用原始的dict是這樣的
復制代碼 代碼如下:
dict_set1 = {}
#如果不知道這個字段中key有沒有,需要先判斷
if 'key' not in dict_set1:
dict_set1['key'] = set()
dict_set1['key'].add('111')
dict_set1['key'].add('000')
print dict_set1
如果使用defaultdict就是這樣的
復制代碼 代碼如下:
dict_set = coll.defaultdict(set)
dict_set['key'].add('000')
dict_set['key'].add('111')
print dict_set
好處就是不需要做set的初始化這個判斷了。
兩個使用的小案例
復制代碼 代碼如下:
ss = '1111222233334444'
dict_int = coll.defaultdict(int)
for s in ss:
dict_int[s] += 1
print dict_int
'''''
官方文檔的這個例子就能看到這種寫法的簡潔了
https://docs.python.org/2/library/collections.html#collections.defaultdict
>>> s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
>>> d = defaultdict(list)
>>> for k, v in s:
... d[k].append(v)
...
>>> d.items()
[('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]
'''
當我們做這種帶有統(tǒng)計性質(zhì)的數(shù)據(jù)操作時候,這個對象很好用。
相關文章
python字符串切割:str.split()與re.split()的對比分析
今天小編就為大家分享一篇python字符串切割:str.split()與re.split()的對比分析,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07使用Python和百度語音識別生成視頻字幕的實現(xiàn)
這篇文章主要介紹了使用Python和百度語音識別生成視頻字幕,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-04-04