最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python collections.defaultdict模塊用法詳解

 更新時(shí)間:2020年06月18日 09:36:43   作者:蕭薔ink  
這篇文章主要介紹了Python collections.defaultdict模塊用法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

Python中通過Key訪問字典,當(dāng)Key不存在時(shí),會(huì)引發(fā)‘KeyError'異常。為了避免這種情況的發(fā)生,可以使用collections類中的defaultdict()方法來為字典提供默認(rèn)值。

語法格式:

collections.defaultdict([default_factory[, …]])
class defaultdict(Dict[_KT, _VT], Generic[_KT, _VT]):
default_factory: Callable[[], _VT]

該函數(shù)返回一個(gè)類似字典的對(duì)象。defaultdict是Python內(nèi)建字典類(dict)的一個(gè)子類,它重寫了方法_missing_(key),增加了一個(gè)可寫的實(shí)例變量default_factory,實(shí)例變量default_factory被missing()方法使用,如果該變量存在,則用以初始化構(gòu)造器,如果沒有,則為None。其它的功能和dict一樣。

第一個(gè)參數(shù)為default_factory屬性提供初始值,默認(rèn)為None;其余參數(shù)包括關(guān)鍵字參數(shù)(keyword arguments)的用法,和dict構(gòu)造器用法一樣。

1.使用list作第一個(gè)參數(shù),可以很容易將鍵-值對(duì)序列轉(zhuǎn)換為列表字典。

from collections import defaultdict
s=[('yellow',1),('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
d=defaultdict(list)
for k, v in s:
  d[k].append(v)
a=sorted(d.items())
print d
print a

'''
defaultdict(<type 'list'>, {'blue': [2, 4], 'red': [1], 'yellow': [1, 3]})
[('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]

'''

當(dāng)字典中沒有的鍵第一次出現(xiàn)時(shí),default_factory自動(dòng)為其返回一個(gè)空列表,list.append()會(huì)將值添加進(jìn)新列表;再次遇到相同的鍵時(shí),list.append()將其它值再添加進(jìn)該列表。

這種方法比使用dict.setdefault()更為便捷,dict.setdefault()也可以實(shí)現(xiàn)相同的功能。

s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
d={}
for k, v in s:
  d.setdefault(k,[]).append(v)
print d
a=sorted(d.items())
print a

'''
{'blue': [2, 4], 'red': [1], 'yellow': [1, 3]}
[('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]
'''

2.defaultdict還可以被用來計(jì)數(shù),將default_factory設(shè)為int即可。

s = 'mississippi'
d = defaultdict(int)
for k in s:
  d[k] += 1
print d
a=sorted(d.items())
print a
'''
defaultdict(<type 'int'>, {'i': 4, 'p': 2, 's': 4, 'm': 1})
[('i', 4), ('m', 1), ('p', 2), ('s', 4)]
'''

字符串中的字母第一次出現(xiàn)時(shí),字典中沒有該字母,default_factory函數(shù)調(diào)用int()為其提供一個(gè)默認(rèn)值0,加法操作將計(jì)算出每個(gè)字母出現(xiàn)的次數(shù)。

函數(shù)int()是常值函數(shù)的一種特例,總是返回0。使用匿名函數(shù)(lambda function)可以更快、更靈活的創(chuàng)建常值函數(shù),返回包括0在內(nèi)的任意常數(shù)值。

def constant_factory(value):
  return lambda: value
d = defaultdict(constant_factory('<missing>'))
print d
d.update(name='John', action='ran')
print d
print '%(name)s %(action)s to %(object)s' % d 
'''
defaultdict(<function <lambda> at 0x10c180668>, {})
defaultdict(<function <lambda> at 0x10c180668>, {'action': 'ran', 'name': 'John'})
John ran to <missing>
'''

3.default_factory設(shè)為set時(shí),可以用defaultdict建立集合字典(a dictionary of sets)

s = [('red', 1), ('blue', 2), ('red', 3), ('blue', 4), ('red', 1), ('blue', 4)]
d = defaultdict(set)
for k, v in s:
  d[k].add(v)
print d
a=sorted(d.items())
print a
'''
defaultdict(<type 'set'>, {'blue': set([2, 4]), 'red': set([1, 3])})
[('blue', set([2, 4])), ('red', set([1, 3]))]
'''

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python中的模式匹配庫Pampy使用實(shí)例解析

    Python中的模式匹配庫Pampy使用實(shí)例解析

    這篇文章主要為大家介紹了Python中的模式匹配庫Pampy使用實(shí)例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • python解析發(fā)往本機(jī)的數(shù)據(jù)包示例 (解析數(shù)據(jù)包)

    python解析發(fā)往本機(jī)的數(shù)據(jù)包示例 (解析數(shù)據(jù)包)

    這篇文章主要介紹了使用python解析獲取發(fā)往本機(jī)的數(shù)據(jù)包,并打印出來, 大家參考使用吧
    2014-01-01
  • python中的屬性管理機(jī)制詳解

    python中的屬性管理機(jī)制詳解

    這篇文章主要介紹了python中的屬性管理機(jī)制,主要包括私有屬性和屬性限制-__slots__方法,文中詳細(xì)介紹了python中如何去聲明變量的相關(guān)知識(shí),需要的朋友可以參考下
    2022-06-06
  • python實(shí)現(xiàn)圖片轉(zhuǎn)字符小工具

    python實(shí)現(xiàn)圖片轉(zhuǎn)字符小工具

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)圖片轉(zhuǎn)字符小工具,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • Python中的二維列表使用及說明

    Python中的二維列表使用及說明

    這篇文章主要介紹了Python中的二維列表使用及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 使用Python向DataFrame中指定位置添加一列或多列的方法

    使用Python向DataFrame中指定位置添加一列或多列的方法

    今天小編就為大家分享一篇使用Python向DataFrame中指定位置添加一列或多列的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • anaconda?navigator打不開問題的解決方法

    anaconda?navigator打不開問題的解決方法

    在使用python的發(fā)行版anaconda時(shí),常常需要根據(jù)自己的項(xiàng)目安裝新的庫,下面這篇文章主要給大家介紹了關(guān)于anaconda?navigator打不開問題的解決方法,需要的朋友可以參考下
    2022-12-12
  • Python pandas中的iloc使用小結(jié)

    Python pandas中的iloc使用小結(jié)

    iloc是Pandas中一個(gè)重要的工具,用于按照整數(shù)位置選擇數(shù)據(jù),通過使用整數(shù)索引,它使得在數(shù)據(jù)處理中按照位置選擇數(shù)據(jù)變得簡單和直觀,這篇文章主要介紹了Python pandas中的iloc使用方法,需要的朋友可以參考下
    2024-06-06
  • Python實(shí)現(xiàn)動(dòng)態(tài)柱狀圖的繪制

    Python實(shí)現(xiàn)動(dòng)態(tài)柱狀圖的繪制

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)動(dòng)態(tài)柱狀圖的繪制的相關(guān)資料,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)與借鑒價(jià)值,需要的可以參考一下
    2022-12-12
  • python?flappy?bird小游戲分步實(shí)現(xiàn)流程

    python?flappy?bird小游戲分步實(shí)現(xiàn)流程

    哈嘍,哈嘍~今天小編又來分享小游戲了——flappy?bird(飛揚(yáng)的小鳥),這個(gè)游戲非常的經(jīng)典,游戲中玩家必須控制一只小鳥,跨越由各種不同長度水管所組成的障礙
    2022-02-02

最新評(píng)論

年辖:市辖区| 达日县| 宜君县| 沿河| 化州市| 景洪市| 长岭县| 呼和浩特市| 灵丘县| 彭州市| 瓦房店市| 德昌县| 贺州市| 南宫市| 海盐县| 化德县| 鹤山市| 柳河县| 额尔古纳市| 鸡泽县| 宁都县| 胶州市| 峨眉山市| 屏山县| 山东省| 吐鲁番市| 龙岩市| 通州市| 兴国县| 万荣县| 溧阳市| 石河子市| 皋兰县| 保定市| 古田县| 航空| 自贡市| 奉贤区| 明光市| 九龙县| 根河市|