python 字典的KeyError處理方法


    先看一段代碼:

user = dict(name="brainliao", age=32)
print(user["sex"])

  運行結果如下:

image

   user這個字典中沒有sex這個key,所以訪問user[“sex”]會報KeyError這個錯

   有如下3中解決方式:

1、調用get(k, default)方法

user = dict(name="brainliao", age=32)
print(user.get("sex", "男"))
 
        

結果如下:

  男

 

2、用collections.defaultdict()方法

import collections
user = collections.defaultdict(str)
print(user["sex"])
結果打印出空字符串
 
這個方法的含義在於指定了字典中的所有values均為字符串,並默認值為空字符串。所有調用user["sex"]不會報錯。但是這種方法有局限性,就是不適合不同的key對應不用類型的value的字典定義。
 
 
3、重定義__missing__方法
 
class User(dict):

    def __missing__(self,key):
        print("調用了 User的__missing__方法")
        return "__missing__"

    def __getitem__(self, item):
        print("調用User 類的 __getitem__方法")
        return super(User, self).__getitem__(item)

    def get(self, k, d=None):
        print("調用User 類的 get 方法")
        return super(User, self).get(k, d)

user = User(name="brianliao", age=32)
print(user["sex"])
 
打印結果如下:

調用User 類的 __getitem__方法
調用了 User的__missing__方法
__missing__

 

    從打印的結果可以看出,獲取字典key對應的值時,會去調用內部的__getitem__方法,而當__getitem__沒找到對應的key時,會調用__missing__方法。最終返回結果。

 

     總結,最簡單、最直接的方式還是使用第一種方式,第二種方式具有很大的局限性,第三種方式在一些特殊情況下很合適使用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM