解決Python字典查找報Keyerror的問題
Python的字典一般都直接查找key ,比如
dict={'a':1,'b':2,'c':3} print(dict['a'])
但是如果在查找的key不存在的時候就會報:KeyError:
比如你要查看print(dict['d'])
由于這個時候dict里面并沒有這個key ,所以就會直接報錯,那么這個時候其實python給我們提供了一種很棒的解決方法,那就是用
setdefault,用法如下: dict.setdefault(key,[這里設(shè)置如果不存在想將值設(shè)置為啥,默認為None])
那么這里我們可以用此方法解決:
print(dict.setdefault('d',0))
然后就沒有問題啦,注意下就是setdefault是如果要想往dict中添加新值的時候就使用此函數(shù),如果只是單純想要做查找,碰到key不存在或者希望在通過這個鍵讀取值的時候能得到一個默認值,那么建議用defaultdict
首先先介紹下這個所謂的defaultdict,來自于collections模塊,collections是個集合模塊,defaultdict(function_factory)構(gòu)建的是一個類似dictionary的對象,其中key的值,自行確定賦值,但是value的類型是function_factory的類實例,而且具有默認值.這里還引入了一個概念就是工廠函數(shù),python的工廠函數(shù)就是指那些內(nèi)建函數(shù)都是類對象,當你調(diào)用他們時,實際上是創(chuàng)建了一個類實例。
比如int(),str(),set()等,這里我們看下例子:
import collections s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)] d = collections.defaultdict(list) for k, v in s: d[k].append(v) print(d['yellow']) print(d['white']) print(list(d.items()))
我們最后得到的輸出結(jié)果如下:
我們可以看到,當d中沒有對應(yīng)的key時最后返回的是個空列表,那是因為我們在設(shè)置defaultdict的時候用的工廠函數(shù)是list,而list的默認值是空列表,下面我們在看下如果工廠函數(shù)是set()會是什么樣子
import collections s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)] d = collections.defaultdict(set) for k, v in s: d[k].add(v) print(d['yellow']) print(d['white']) print(list(d.items()))
結(jié)果輸出如下:
補充:python報錯出現(xiàn) KeyError: 'longitude'
python報錯出現(xiàn) KeyError: ‘longitude'
報錯界面如下圖所示:
我在網(wǎng)上尋找了方法,確實找到一個解決方案:對你可能有用的解決方案一
但是我試了還是沒用,于是,當我定睛一看,發(fā)現(xiàn)竟又是由于俺的粗心造成的。啊,如下圖,按在longitude前面少了個逗號,
如下圖:
所以這個問題就解決啦,好,我繼續(xù)我的課程設(shè)計了。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
pyecharts如何使用formatter回調(diào)函數(shù)的問題
這篇文章主要介紹了pyecharts如何使用formatter回調(diào)函數(shù)的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08Python如何import文件夾下的文件(實現(xiàn)方法)
下面小編就為大家?guī)硪黄狿ython如何import文件夾下的文件(實現(xiàn)方法)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-01-01Python通過pymysql調(diào)用MySQL進行增刪改移查
這篇文章主要介紹了Python通過pymysql調(diào)用MySQL,從而實現(xiàn)數(shù)據(jù)的增刪改移查功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習一下2021-12-12python 不關(guān)閉控制臺的實現(xiàn)方法
在win32下,雙擊python程序會打開dos窗口,但是執(zhí)行完畢后就會關(guān)閉,看不到輸出的結(jié)果2011-10-10Python實現(xiàn)創(chuàng)建詞云的示例詳解
詞云一般是根據(jù)輸入的大量詞語生成的,如果某個詞語出現(xiàn)的次數(shù)越多,那么相應(yīng)的大小就會越大,本文將利用wordcloud模塊實現(xiàn)詞云生成,需要的可以參考下2023-10-10