国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python標準庫defaultdict模塊使用示例

2019-11-25 17:38:17
字體:
來源:轉載
供稿:網友

Python標準庫中collections對集合類型的數據結構進行了很多拓展操作,這些操作在我們使用集合的時候會帶來很多的便利,多看看很有好處。
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 

結論:這里可以看到,當我們取字典中一個沒有的key的時候就會自動根據 default_factory生成一個value,類似于 d.get('bar','default value')

一個對比的例子:
如果一個字典中有個map的value是一個set,往這個set連續添加兩個元素,使用原始的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])]
''' 

當我們做這種帶有統計性質的數據操作時候,這個對象很好用。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 天镇县| 太原市| 云浮市| 聂荣县| 赤水市| 泊头市| 波密县| 武安市| 合肥市| 肥西县| 铁岭县| 剑阁县| 裕民县| 张北县| 浑源县| 九江市| 长治县| 高密市| 海兴县| 民县| 芷江| 林口县| 双流县| 准格尔旗| 安龙县| 颍上县| 眉山市| 金寨县| 明溪县| 濮阳市| 景泰县| 克什克腾旗| 福鼎市| 呼玛县| 大田县| 华亭县| 南乐县| 蒙城县| 临澧县| 衡山县| 应城市|