黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

Python標(biāo)準(zhǔn)庫(kù)defaultdict模塊使用示例

系統(tǒng) 1913 0

Python標(biāo)準(zhǔn)庫(kù)中collections對(duì)集合類型的數(shù)據(jù)結(jié)構(gòu)進(jìn)行了很多拓展操作,這些操作在我們使用集合的時(shí)候會(huì)帶來(lái)很多的便利,多看看很有好處。
defaultdict是其中一個(gè)方法,就是給字典value元素添加默認(rèn)類型,之前看到過(guò)但是沒(méi)注意怎么使用,今天特地瞅了瞅。

首先是各大文章介紹的第一個(gè)例子:

復(fù)制代碼 代碼如下:

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'的元素不存在,會(huì)有一個(gè)默認(rèn)值?

輸出結(jié)果是這樣的:
復(fù)制代碼 代碼如下:

d: defaultdict( , {'foo': 'bar'})?
foo=> bar?
foo=> default value?

結(jié)論:這里可以看到,當(dāng)我們?nèi)∽值渲幸粋€(gè)沒(méi)有的key的時(shí)候就會(huì)自動(dòng)根據(jù) default_factory生成一個(gè)value,類似于 d.get('bar','default value')

一個(gè)對(duì)比的例子:
如果一個(gè)字典中有個(gè)map的value是一個(gè)set,往這個(gè)set連續(xù)添加兩個(gè)元素,使用原始的dict是這樣的

復(fù)制代碼 代碼如下:

dict_set1 = {}?
#如果不知道這個(gè)字段中key有沒(méi)有,需要先判斷?
if 'key' not in dict_set1:?
??? dict_set1['key'] = set()?
dict_set1['key'].add('111')?
dict_set1['key'].add('000')?
print dict_set1?

如果使用defaultdict就是這樣的
復(fù)制代碼 代碼如下:

dict_set = coll.defaultdict(set)?
dict_set['key'].add('000')?
dict_set['key'].add('111')?
print dict_set

好處就是不需要做set的初始化這個(gè)判斷了。

兩個(gè)使用的小案例

復(fù)制代碼 代碼如下:

ss = '1111222233334444'?
dict_int = coll.defaultdict(int)?
for s in ss:?
??? dict_int[s] += 1?
print dict_int?
?
'''''
官方文檔的這個(gè)例子就能看到這種寫法的簡(jiǎn)潔了
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])]
'''?

當(dāng)我們做這種帶有統(tǒng)計(jì)性質(zhì)的數(shù)據(jù)操作時(shí)候,這個(gè)對(duì)象很好用。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論