python字典中g(shù)et()函數(shù)的基本用法實(shí)例
前言
以下內(nèi)容均為個(gè)人筆記,僅供學(xué)習(xí)參考使用,因內(nèi)容均為自己實(shí)踐經(jīng)驗(yàn)所得,個(gè)人水平有限,如有錯(cuò)誤歡迎指正
注:編程語言為Python3
1.get()函數(shù)利用鍵來獲取值
之前在學(xué)習(xí)python的時(shí)候,在獲取值得時(shí)候常用的方法就是直接
print(dict[key])
但這種方法中當(dāng)字典中不存在該鍵時(shí)會(huì)返回KeyError類型錯(cuò)誤,此時(shí)就可以用get()函數(shù)還利用鍵獲取值
print(dict.get(key))
利用get()函數(shù)操作時(shí)當(dāng)字典中不存在輸入的鍵時(shí)會(huì)返回一個(gè)None,這樣程序運(yùn)行時(shí)就不會(huì)出異常
2.利用字典統(tǒng)計(jì)列表中元素出現(xiàn)次數(shù)
比如現(xiàn)在有這么一個(gè)列表,讓你統(tǒng)計(jì)列表中部分元素出現(xiàn)的次數(shù)
ls=['aa','b','c','ddd','aa']
統(tǒng)計(jì)列表中每個(gè)元素出現(xiàn)次數(shù):
cou={} #創(chuàng)建一個(gè)空字典 for i in ls: cou[i]=cou.get(i,0)+1 #之后稱其為get的賦值語句,目的是新建字典鍵值對(duì) ''' 賦值語句代碼等價(jià)于 cou[i]=0 cou[i}=cou[i]+1 ''' print(cou)
輸出結(jié)果:
{'aa': 2, 'b': 1, 'c': 1, 'ddd': 1}
get()函數(shù)在這里有兩個(gè)參數(shù),第一個(gè)是確定要分配值的鍵,第二個(gè)是擬定給鍵分配一個(gè)初值,但實(shí)際要給鍵賦值仍需要get賦值語句(為什么這么說下面有介紹)
比如說我現(xiàn)在添加這個(gè)語句到代碼中
cou.get('b',10) #之后稱為擬定初值語句
擬定初值語句本身對(duì)結(jié)果是沒有影響的,因?yàn)椴]有實(shí)際的對(duì)鍵進(jìn)行賦值語句操作(個(gè)人感覺擬定初值語句是因?yàn)闆]有在字典中找到要賦值的鍵,因?yàn)楦緵]有創(chuàng)建要賦值的鍵,因此賦值失敗,即相當(dāng)于一個(gè)沒有返回值的函數(shù),就算給這個(gè)函數(shù)賦參數(shù)了也沒有任何返回結(jié)果)
注:get()函數(shù)在作為鍵賦值語句(非擬定賦值語句,區(qū)別看上代碼框內(nèi)注釋)時(shí)只有第一次是有效的,(比如get()函數(shù)在第一次對(duì)’aa’這個(gè)鍵使用get賦值語句后下次再使用get賦值語句時(shí)鍵的值仍為第一次賦值運(yùn)算后的結(jié)果),以下為測試代碼:
ls=['aa','b','c','ddd','aa'] cou={} #創(chuàng)建一個(gè)空字典 for i in ls: cou[i]=cou.get(i,0)+1 #功能邏輯看下方闡述 cou['aa']=cou.get('aa',10) #功能同前一條代碼執(zhí)行到第二次時(shí)的 print(cou)
這里著重講一下第4行代碼:cou[i]=cou.get(i,0)+1
第行代碼從邏輯上講執(zhí)行了兩次,而這兩次里get語句每次執(zhí)行時(shí)的功能是不一樣的:
第一次:cou[i]=cou.get(i,0)+1(i=‘aa’)
此時(shí)get語句的功能為賦初值,即把鍵’aa’的初值置為0然后加1
第二次:cou[i]=cou.get(i,0)+1(i=‘aa’)
因get語句已經(jīng)作為賦值語句出現(xiàn)過一次了,因此此時(shí)再執(zhí)行這條語句時(shí),賦值功能已經(jīng)無效了,也就是get語句里第二個(gè)參數(shù)對(duì)’aa’這個(gè)鍵已經(jīng)無效了,此時(shí)get語句的功能為文章內(nèi)的第一大部分所介紹的功能,所以這條語句此時(shí)可等價(jià)為
cou[i]=cou.get(i)+1
即
cou[i]=cou[i]+1
輸出結(jié)果和之前的代碼結(jié)果相同:
{'aa': 2, 'b': 1, 'c': 1, 'ddd': 1}
當(dāng)單獨(dú)使用get賦值語句時(shí)如果鍵是第一次出現(xiàn)的話,效果等同賦值語句(和之前在空字典里通過for循環(huán)建立新鍵值對(duì)效果一樣)
cou['e']=cou.get(e,10)
輸出結(jié)果:
```python
{'aa': 10, 'b': 1, 'c': 1, 'ddd': 1,'e':10}
順帶一提如果想直接改變字典中鍵的值時(shí)可用如下方法:
cou['aa']=10 #這種賦值語句帶有強(qiáng)制性 print(cou)
輸出結(jié)果:
{'aa': 10, 'b': 1, 'c': 1, 'ddd': 1}
補(bǔ)充:和dict[key]的區(qū)別
dict.get(key)和dict[key]在key值存在的情況下,都能得到對(duì)應(yīng)的鍵值。但是當(dāng)使用dict[key]時(shí),key必須要存在,否則會(huì)報(bào)錯(cuò)。但是dict.get[key]中的key可以不存在,因?yàn)間et方法有一個(gè)默認(rèn)的參數(shù)None,當(dāng)key不存在的時(shí)候,返回None。
總結(jié)
到此這篇關(guān)于python字典中g(shù)et()函數(shù)基本用法的文章就介紹到這了,更多相關(guān)python字典get()函數(shù)用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
turtle的基礎(chǔ)使用之python?turtle遞歸繪圖
這篇文章主要介紹了turtle的基礎(chǔ)使用之python?turtle遞歸繪圖,turtle是一種比較簡單的第三方庫,下面借助遞歸繪圖詳細(xì)描述該內(nèi)容,具有一的的知識(shí)性參考價(jià)值,需要的朋友可以參考一下2022-02-02Anaconda安裝之后Spyder打不開解決辦法(親測有效!)
這篇文章主要給大家介紹了關(guān)于Anaconda安裝之后Spyder打不開解決辦法,文中將解決的過程介紹的非常詳細(xì),親測有效,對(duì)同樣遇到這個(gè)問題的朋友具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-04-04python實(shí)現(xiàn)根據(jù)文件關(guān)鍵字進(jìn)行切分為多個(gè)文件的示例
今天小編就為大家分享一篇python實(shí)現(xiàn)根據(jù)文件關(guān)鍵字進(jìn)行切分為多個(gè)文件的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-12-12TensorFlow用expand_dim()來增加維度的方法
今天小編就為大家分享一篇TensorFlow用expand_dim()來增加維度的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-07-07Python?xpath,JsonPath,bs4的基本使用
這篇文章主要介紹了Python?xpath,JsonPath,bs4的基本使用,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下2022-07-07python用reduce和map把字符串轉(zhuǎn)為數(shù)字的方法
最近在復(fù)習(xí)高階函數(shù)的時(shí)候,有一道題想了半天解不出來。于是上午搜索資料,看了下別人的解法,發(fā)現(xiàn)學(xué)習(xí)編程,思維真的很重要。下面這篇文章就來給大家介紹了python利用reduce和map把字符串轉(zhuǎn)為數(shù)字的思路及方法,有需要的朋友們可以參考借鑒,下面來一起看看吧。2016-12-12使用Python實(shí)現(xiàn)廣告點(diǎn)擊率預(yù)測
廣告點(diǎn)擊率是指有多少用戶點(diǎn)擊了您的廣告與有多少用戶查看了您的廣告的比率,本文主要為大家介紹了如何使用Python實(shí)現(xiàn)廣告點(diǎn)擊率預(yù)測,感興趣的小伙伴可以了解下2023-10-10