處理 Python 字典中缺失的鍵


在 Python 中,有一種容器稱為字典。在字典中,我們可以將鍵對映到其值。使用字典,可以以常數時間訪問值。但是,當給定的鍵不存在時,可能會發生一些錯誤。

在本節中,我們將瞭解如何處理此類錯誤。如果我們嘗試訪問缺失的鍵,它可能會返回如下錯誤。

示例程式碼

即時演示

country_dict = {'India' : 'IN', 'Australia' : 'AU', 'Brazil' : 'BR'}
print(country_dict['Australia'])
print(country_dict['Canada']) # This will return error

輸出

AU
---------------------------------------------------------------------------
KeyErrorTraceback (most recent call last)
<ipython-input-2-a91092e7ee85> in <module>()
      2 
      3 print(country_dict['Australia'])
----> 4 print(country_dict['Canada'])# This will return error

KeyError: 'Canada'

使用 get() 方法處理 KeyError

我們可以使用 get 方法來檢查鍵。此方法接受兩個引數。第一個是鍵,第二個是預設值。當找到鍵時,它將返回與該鍵關聯的值,但是當鍵不存在時,它將返回預設值,該值作為第二個引數傳遞。

示例程式碼

即時演示

country_dict = {'India' : 'IN', 'Australia' : 'AU', 'Brazil' : 'BR'}
print(country_dict.get('Australia', 'Not Found'))
print(country_dict.get('Canada', 'Not Found'))

輸出

AU
Not Found

使用 setdefault() 方法處理 KeyError

此 setdefault() 方法類似於 get() 方法。它也像 get() 一樣接受兩個引數。第一個是鍵,第二個是預設值。此方法的唯一區別是,當存在缺失的鍵時,它將使用預設值新增新的鍵。

示例程式碼

即時演示

country_dict = {'India' : 'IN', 'Australia' : 'AU', 'Brazil' : 'BR'}
country_dict.setdefault('Canada', 'Not Present') #Set a default value for Canada
print(country_dict['Australia'])
print(country_dict['Canada'])

輸出

AU
Not Present

使用 defaultdict

defaultdict 是一種容器。它位於 Python 的 collections 模組中。defaultdict 以預設工廠作為其引數。最初,預設工廠設定為 0(整數)。當鍵不存在時,它返回預設工廠的值。

我們不需要一遍遍地指定方法,因此它為字典物件提供了更快速的方法。

示例程式碼

即時演示

import collections as col
#set the default factory with the string 'key not present'
country_dict = col.defaultdict(lambda: 'Key Not Present')
country_dict['India'] = 'IN'
country_dict['Australia'] = 'AU'
country_dict['Brazil'] = 'BR'
print(country_dict['Australia'])
print(country_dict['Canada'])

輸出

AU
Key Not Present

更新於: 2019-07-30

1K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.