2013-04-27 37 views
2

我只想更改字典中鍵的值(如果它已經存在)。Python:修改現有的鍵值對,如果鍵不存在則引發異常

我可以用下面的函數做到這一點,但我想知道是否有一個更簡潔的方法來做到這一點。

def modify_existing_key_value(d, key, new_value): 
    if key in d: 
     d[key] = new_value 
    else: 
     raise KeyError(k) 

用例是無意中避免在字典中創建新的鍵值對。

+0

如果調用代碼將不得不檢查異常呢(用try-except塊),爲什麼使用更難的函數來讀取與原始if語句基本相同的函數('if key in d')? – 2013-04-27 00:08:42

回答

6

剛剛嘗試使用該密鑰來訪問元素,如果它的存在,沒有任何反應,所以繼續執行到重置值的下一個指令,否則KeyError將引發異常,因爲你想要的:

def modify_existing_key_value(d, key, new_value): 
    d[key] # We don't need the old value, just checking the key 
    d[key] = new_value 

函數的第一行的全部目的:

d[key] 

是提高KeyError異常,如果字典中不包含的關鍵。

使用d [關鍵]提高KeyError例外,一個班輪可能是:

d[key] = new_value if key in d else d[key] 
+0

爲什麼不只是'd [key]'而不是綁定到一個變量,看到你不需要它呢? – Volatility 2013-04-27 00:15:02

+0

似乎我是唯一一個真正閱讀過這個問題的人,還是有人低估了我...... – piokuc 2013-04-27 00:15:10

+0

只是爲了讓它更具可讀性。但事實並非如此,我並不需要 – piokuc 2013-04-27 00:15:48