Python中如何給字典設(shè)置默認(rèn)值
Python字典設(shè)置默認(rèn)值
我們都知道,在 Python 的字典里邊,如果 key 不存在的話,通過(guò) key 去取值是會(huì)報(bào)錯(cuò)的。
>>> aa = {'a':1, 'b':2} >>> aa['c'] Traceback (most recent call last): ? File "<stdin>", line 1, in <module> KeyError: 'c'
如果我們?cè)谌〔坏街档臅r(shí)候不報(bào)錯(cuò)而是給定一個(gè)默認(rèn)值的話就友好多了。
初始化的時(shí)候設(shè)定默認(rèn)值(defaultdict 或 dict.fromkeys)
>>> from collections import defaultdict >>> aa = defaultdict(int) >>> aa['a'] = 1 >>> aa['b'] = 2 >>> aa defaultdict(<class 'int'>, {'a': 1, 'b': 2}) >>> aa['c'] 0 >>> aa defaultdict(<class 'int'>, {'a': 1, 'b': 2, 'c': 0}) >>> aa = dict.fromkeys('abc', 0) >>> aa {'a': 0, 'b': 0, 'c': 0}
defaultdict(default_factory) 中的 default_factory 也可以傳入自定義的匿名函數(shù)之類的喲。
>>> aa = defaultdict(lambda : 1) >>> aa['a'] 1
獲取值之前的時(shí)候設(shè)定默認(rèn)值(setdefault(key, default))
這里有個(gè)比較特殊的點(diǎn):只要對(duì)應(yīng)的 key 已經(jīng)被設(shè)定了值之后,那么對(duì)相同 key 再次設(shè)置默認(rèn)值就沒(méi)用了。
因此,如果你在循環(huán)里邊給一個(gè) key 重復(fù)設(shè)定默認(rèn)值的話,那么也只會(huì)第一次設(shè)置的生效。
>>> aa = {'a':1, 'b':2} >>> aa {'a': 1, 'b': 2} >>> aa.get('c') >>> aa.setdefault('c', 'hello') 'hello' >>> aa.get('c') 'hello' >>> aa {'a': 1, 'b': 2, 'c': 'hello'} >>> aa.setdefault('c', 'world') 'hello' >>> aa.get('c') 'hello'
獲取值的時(shí)候設(shè)定默認(rèn)值(dict.get(key, default))
>>> aa = {'a':1, 'b':2} >>> aa {'a': 1, 'b': 2} >>> aa['c'] Traceback (most recent call last): ? File "<stdin>", line 1, in <module> KeyError: 'c' >>> aa.get('c') >>> aa {'a': 1, 'b': 2} >>> aa.get('c', 'hello') 'hello' >>> aa.get('b') 2
python創(chuàng)建帶默認(rèn)值的字典
防止keyerror創(chuàng)建帶默認(rèn)值的字典
from collections import defaultdict data = collections.defaultdict(lambda :[])
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
ActiveMQ:使用Python訪問(wèn)ActiveMQ的方法
今天小編就為大家分享一篇ActiveMQ:使用Python訪問(wèn)ActiveMQ的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01pytorch中圖像的數(shù)據(jù)格式實(shí)例
今天小編就為大家分享一篇pytorch中圖像的數(shù)據(jù)格式實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02python人工智能tensorflow函數(shù)tf.get_collection使用方法
這篇文章主要為大家介紹了python人工智能tensorflow函數(shù)tf.get_collection使用方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05Python報(bào)錯(cuò)SyntaxError:unexpected?EOF?while?parsing的解決辦法
在運(yùn)行或編寫(xiě)一個(gè)程序時(shí)常會(huì)遇到錯(cuò)誤異常,這時(shí)python會(huì)給你一個(gè)錯(cuò)誤提示類名,告訴出現(xiàn)了什么樣的問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于Python報(bào)錯(cuò)SyntaxError:unexpected?EOF?while?parsing的解決辦法,需要的朋友可以參考下2022-07-07TensorFlow搭建神經(jīng)網(wǎng)絡(luò)最佳實(shí)踐
這篇文章主要為大家詳細(xì)介紹了TensorFlow搭建神經(jīng)網(wǎng)絡(luò)最佳實(shí)踐,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03Python實(shí)現(xiàn)二叉樹(shù)結(jié)構(gòu)與進(jìn)行二叉樹(shù)遍歷的方法詳解
二叉樹(shù)是最基本的數(shù)據(jù)結(jié)構(gòu),這里我們?cè)赑ython中使用類的形式來(lái)實(shí)現(xiàn)二叉樹(shù)并且用內(nèi)置的方法來(lái)遍歷二叉樹(shù),下面就讓我們一起來(lái)看一下Python實(shí)現(xiàn)二叉樹(shù)結(jié)構(gòu)與進(jìn)行二叉樹(shù)遍歷的方法詳解2016-05-05python實(shí)現(xiàn)轉(zhuǎn)圈打印矩陣
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)轉(zhuǎn)圈打印矩陣,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-03-03Python OpenCV 調(diào)用攝像頭并截圖保存功能的實(shí)現(xiàn)代碼
這篇文章主要介紹了Python OpenCV 調(diào)用攝像頭并截圖保存功能,本文通過(guò)兩段實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07