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