亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python KeyError異常的原因及問題解決

 更新時間:2024年12月12日 11:48:46   作者:Arnim Zola  
KeyError是Python內置異常之一,KeyError是當試圖獲取字典中不存在的鍵時,引發(fā)的異常,本文就來介紹一下KeyError異常的原因及問題解決,感興趣的可以了解一下

什么是 KeyError 異常?

在 Python 中,KeyError 異常是內置異常之一,具體來說,KeyError 是當試圖獲取字典中不存在的鍵時,引發(fā)的異常。作為參考,字典是一種將數(shù)據(jù)存儲在鍵值對中的數(shù)據(jù)結構,字典中的 value 是通過其 key 獲取的。

Python KeyError 常見原因及示例

以國家及其首都的字典作為例子:

dictionary_capitals = {'BeiJing': 'China', 'Madrid': 'Spain', 'Lisboa': 'Portugal', 'London': 'United Kingdom'}

要在字典中搜索信息,需要在括號中指定 key,Python 將返回相關的 value。

dictionary_capitals['BeiJing']

'China'

如果獲取一個在字典中沒有的 key,Python 將會拋出 KeyError 異常錯誤信息。

dictionary_capitals['Rome']

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'Rome'

嘗試獲取其他 Python 字典中不存在的 key 時,也會遇到這樣的異常。例如,系統(tǒng)的環(huán)境變量。

# 獲取一個不存在的環(huán)境變量
os.environ['USERS']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/os.py", line 679, in __getitem__
    raise KeyError(key) from None
KeyError: 'USERS'

處理 Python KeyError 異常

有兩種策略去處理 KeyError 異常 ,一是避免 KeyError,二是捕獲 KeyError

防止 KeyError

如果嘗試獲取不存在的 key 時,Python 會拋出 KeyError。為了防止這種情況,可以使用 .get() 獲取字典中的鍵,使用此方法遇到不存在的 key,Python 將會返回 None 而不是 KeyError。

print(dictionary_capitals.get('Prague'))

None

或者,可以在獲取 key 之前檢查它是否存在,這種防止異常的方法被稱為 “Look Before You Leap”,簡稱 LBYL, 在這種情況下,可以使用 if 語句來檢查鍵是否存在,如果不存在,則在 else 子句中處理。

capital = "Prague"
if capital in dictionary_capitals.keys():
    value = dictionary_capitals[capital]
else:
    print("The key {} is not present in the dictionary".format(capital)) 

通過異常處理捕獲 KeyError

第二種方法被稱為 “Easier to Ask Forgiveness Than Permission”,簡稱 EAFP,是 Python 中處理異常的標準方法。

采用 EAFP 編碼風格意味著假設存在有效的 key,并在出現(xiàn)錯誤時捕獲異常。LBYL 方法依賴于 if/else 語句,EAFP 依賴于 try/except 語句。

下面示例,不檢查 key 是否存在,而是嘗試獲取所需的 key。如果由于某種原因,該 key 不存在,那么只需捕獲 except 子句中的 KeyError 進行處理。

capital = "Prague"
try:
     value = dictionary_capitals[capital]
except KeyError:
     print("The key {} is not present in the dictionary".format(capital))  

Python 高階處理 KeyError

使用 defaultdict

Python 在獲取字典中不存在的 key 時,會返回 KeyError 異常。.get() 方式是一種容錯方法,但不是最優(yōu)解。

Collections 模塊提供了一種處理字典更好的方法。與標準字典不同,defaultdict 獲取不存在的 key ,則會拋出一個指定的默認值,

from collections import defaultdict 

# Defining the dict 
capitals = defaultdict(lambda: "The key doesn't exist") 
capitals['Madrid'] = 'Spain'
capitals['Lisboa'] = 'Portugal'
print(capitals['Madrid']) 
print(capitals['Lisboa']) 
print(capitals['Ankara']) 

 Spain
Portugal
The key doesn't exist

到此這篇關于Python KeyError異常的原因及問題解決的文章就介紹到這了,更多相關Python KeyError異常內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python實現(xiàn)異常值自動檢測的案例分享

    Python實現(xiàn)異常值自動檢測的案例分享

    在數(shù)據(jù)分析和機器學習中,異常值的檢測是一個關鍵步驟,它有助于識別數(shù)據(jù)中的異常模式和離群點,本文將介紹Python中異常值檢測的實戰(zhàn)案例,使用一些常見的技術和庫,為大家提供全面的示例代碼和詳細解釋
    2024-01-01
  • numpy.linalg.eig() 計算矩陣特征向量方式

    numpy.linalg.eig() 計算矩陣特征向量方式

    今天小編就為大家分享一篇numpy.linalg.eig() 計算矩陣特征向量方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • python中map的基本用法示例

    python中map的基本用法示例

    map函數(shù)的原型是map(function, iterable, …),它的返回結果是一個列表。下面這篇文章主要給大家介紹了關于python中map的基本用法,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2018-09-09
  • 用Python進行數(shù)據(jù)清洗以及值處理

    用Python進行數(shù)據(jù)清洗以及值處理

    這篇文章主要介紹了用Python進行數(shù)據(jù)清洗以及值處理,數(shù)據(jù)分析中,數(shù)據(jù)清洗是一個必備階段。數(shù)據(jù)分析所使用的數(shù)據(jù)一般都很龐大,致使數(shù)據(jù)不可避免的出現(xiàn)重復、缺失、異常值等異常數(shù)據(jù),如果忽視這些異常數(shù)據(jù),可能導致分析結果的準確性,需要的朋友可以參考下
    2023-07-07
  • 淺談一下基于Pytorch的可視化工具

    淺談一下基于Pytorch的可視化工具

    這篇文章主要介紹了基于Pytorch的可視化工具,Pytorch是一款Python優(yōu)先的深度學習框架,需要的朋友可以參考下
    2023-04-04
  • python中subprocess實例用法及知識點詳解

    python中subprocess實例用法及知識點詳解

    在本篇文章里小編給大家分享的是關于python中subprocess實例用法及知識點詳解內容,有需要的朋友們可以跟著學習下。
    2021-10-10
  • Facebook開源一站式服務python時序利器Kats詳解

    Facebook開源一站式服務python時序利器Kats詳解

    這篇文章主要為答案及介紹了Facebook開源一站式服務python時序利器Kats的功能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2021-11-11
  • Python中連接不同數(shù)據(jù)庫的方法總結

    Python中連接不同數(shù)據(jù)庫的方法總結

    在數(shù)據(jù)驅動的現(xiàn)代應用開發(fā)中,Python憑借其豐富的庫和強大的生態(tài)系統(tǒng),成為連接各種數(shù)據(jù)庫的理想編程語言,下面我們就來看看如何使用Python實現(xiàn)連接常用的幾個數(shù)據(jù)庫吧
    2025-02-02
  • python中l(wèi)ist列表的高級函數(shù)

    python中l(wèi)ist列表的高級函數(shù)

    這篇文章主要為大家詳細介紹了python中l(wèi)ist列表的高級函數(shù),感興趣的小伙伴們可以參考一下
    2016-05-05
  • Python 寫了個新型冠狀病毒疫情傳播模擬程序

    Python 寫了個新型冠狀病毒疫情傳播模擬程序

    這篇文章主要介紹了Python 寫了個新型冠狀病毒疫情傳播模擬程序,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02

最新評論