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

首頁 > 編程 > Python > 正文

Python中的defaultdict與__missing__()使用介紹

2020-02-22 23:07:45
字體:
來源:轉載
供稿:網友

前言

今天我們的主角是 defaultdict ,同時也會介紹一下模仿方法 __missing__() ,本文主要來源于網友博客,分享給有需要的人。下面話不多說了,來一起看看詳細的介紹吧。

默認值可以很方便

眾所周知,在Python中如果訪問字典中不存在的鍵,會引發KeyError異常。但是有時候,字典中的每個鍵都存在默認值是非常方便的。例如下面的例子:

strings = ('puppy', 'kitten', 'puppy', 'puppy',   'weasel', 'puppy', 'kitten', 'puppy')counts = {}for kw in strings: counts[kw] += 1

該例子統計strings中某個單詞出現的次數,并在counts字典中作記錄。單詞每出現一次,在counts相對應的鍵所存的值數字加1。但是事實上,運行這段代碼會拋出KeyError異常,出現的時機是每個單詞第一次統計的時候,因為Python的dict中不存在默認值的說法,可以在Python命令行中驗證:

>>> counts = dict()>>> counts{}>>> counts['puppy'] += 1Traceback (most recent call last): File "<stdin>", line 1, in <module>KeyError: 'puppy'

使用判斷語句檢查

既然如此,首先可能想到的方法是在單詞第一次統計的時候,在counts中相應的鍵存下默認值1。這需要在處理的時候添加一個判斷語句:

strings = ('puppy', 'kitten', 'puppy', 'puppy',   'weasel', 'puppy', 'kitten', 'puppy')counts = {}for kw in strings: if kw not in counts:  counts[kw] = 1 else:  counts[kw] += 1# counts:# {'puppy': 5, 'weasel': 1, 'kitten': 2}

使用 dict.setdefault() 方法

也可以通過 dict.setdefault() 方法來設置默認值:

strings = ('puppy', 'kitten', 'puppy', 'puppy',   'weasel', 'puppy', 'kitten', 'puppy')counts = {}for kw in strings: counts.setdefault(kw, 0) counts[kw] += 1

dict.setdefault() 方法接收兩個參數,第一個參數是健的名稱,第二個參數是默認值。假如字典中不存在給定的鍵,則返回參數中提供的默認值;反之,則返回字典中保存的值。利用 dict.setdefault() 方法的返回值可以重寫for循環中的代碼,使其更加簡潔:

strings = ('puppy', 'kitten', 'puppy', 'puppy',   'weasel', 'puppy', 'kitten', 'puppy')counts = {}for kw in strings: counts[kw] = counts.setdefault(kw, 0) + 1

使用 collections.defaultdict 類

以上的方法雖然在一定程度上解決了dict中不存在默認值的問題,但是這時候我們會想,有沒有一種字典它本身提供了默認值的功能呢?答案是肯定的,那就是 collections.defaultdict 。

defaultdict類就好像是一個dict,但是它是使用一個類型來初始化的:

>>> from collections import defaultdict>>> dd = defaultdict(list)>>> dddefaultdict(<type 'list'>, {})            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 盐源县| 班戈县| 安仁县| 丰台区| 柳州市| 青浦区| 辽阳县| 乐安县| 大丰市| 宁河县| 楚雄市| 绥中县| 渭南市| 花莲县| 漯河市| 天全县| 曲周县| 江山市| 济阳县| 恩施市| 平南县| 囊谦县| 饶阳县| 梅河口市| 广昌县| 敖汉旗| 呼和浩特市| 大余县| 高尔夫| 苍溪县| 东阳市| 西峡县| 绥宁县| 安岳县| 乌兰县| 丰宁| 隆安县| 云和县| 比如县| 太和县| 邯郸市|