1. 程式人生 > >Python的字典get方法:從字典中獲取一個值

Python的字典get方法:從字典中獲取一個值

從字典中獲取一個值,問題: 
你需要從字典中獲得一個值,不要處理在字典裡找不到你所需要的鍵值的異常。那就是字典的get方法。 

如果你有一個字典,d = {'key':'value'}   
在一個異常安全的方法中,你能夠寫一個從d中提取‘key’的值的測試  

if d.has_key('key'): # or, in Python 2.2 or later: if 'key' in d:   
  print d['key']   
else:   
  print 'not found'   
 
然而有一個更簡單的方法  
print d.get('key', 'not found') 

 
[討論  ]
想從一個字典獲得一個值,但是首先要確信這個值是否在這個字典裡?使用簡單有效的其實是get方法。  
如果你試著用象d[x] 那樣的語法來獲得一個值,並且x的值不是字典d的鍵值, 你的嘗試將丟擲一個KeyError異常。 
這個是經常有用的。如果你期望x的值是d中的一個鍵值,一個異常是通知你犯錯了的正確途徑。(那就是說,你需要除錯你的程式了)

然而,關於它,你經常需要更多的假設:直到你知道x的值或者是或不是d中的一個鍵值。
在這種情況下,忘掉has_key 方法或者try/except語句。 
取而代之的,是使用get方法。

如果你呼叫d.get(x) ,沒有異常被丟擲。如果x是d的一個鍵值,你得到d[x]。
如果不是,你得到None(你能檢查或者傳播它)。 
當x不是d的鍵值的時候,如果None不是你想要的,呼叫d.get(x, somethingelse) 來替代。
在這種情況下,如果x不是一個鍵值。你將得到somethingelse的值  

Get是簡單,有效的機制,python的文件很好的解釋了它。
但是不知道它的人的數量令人驚訝。當抽取REQUEST字典的一些值的時候,這個慣用方法在zope中也是相當普遍的。