1. 程式人生 > >如何給Python dict設定預設的返回值(value)

如何給Python dict設定預設的返回值(value)

 兩種方法:

dict.get(key , default=None)

dict.setdefault(key, default=None)

  • 以上二者呼叫返回的結果完全相同,都是當dict中不含有該鍵時,返回後面你給的預設值;
  • 但二者也有區別——get方法不會改變dict,而setdefault方法會在一次呼叫後向dict中新增這個之前不存在的鍵值對

請見程式碼:

dicts = {5:'Garnett',11:'Irving',0:'Tatum',7:'Brown',20:'Hayward'}
dicts.get(36,'Smart')
>>> 'Smart'
dicts
>>> {5: 'Garnett', 11: 'Irving', 0: 'Tatum', 7: 'Brown', 20: 'Hayward'}  # dicts沒有變化,我鋼哥沒被加進來

dicts.setdefault(42,'Horford')
>>> 'Horford'
dicts
>>> {5: 'Garnett',
     11: 'Irving',
     0: 'Tatum',
     7: 'Brown',
     20: 'Hayward',
     42: 'Horford'}
       # dicts被改變了,伙伕被加了進來

defaultdict

如上,在Python的collections模組中,有defaltdict容器,這個容器可以在該容器中不含有某個鍵的時候直接返回你預設設定的值

程式碼如下:

from collections import defaultdict

dict1 = defaultdict(lambda :'Rozier')
dict1[12]
>>> 'Rozier'

dict1[13]
>>> 'Rozier'

dict1
>>> defaultdict(<function __main__.<lambda>()>, {13: 'Rozier', 12: 'Rozier'})

如程式碼所示,defaultdict可以接收一個函式,這個函式專門用於對不存在於defaultdict中的key進行處理,得到初始化的value 。我們這裡傳入了最簡單的一個函式,不論傳入的key為何值,返回值均是“Rozier”(返回一個太子)。所以後面可見,不論傳入的時12還是13,結果都會返回一個初始化的預設值‘Rozier’,而不會丟擲異常。同時defaultdict中也存入了者兩組鍵值對。