2012-09-15 23 views
3

當我想追加項下NEWVALUE到快譯通,我覺得自己必須寫:更簡潔的方式將值附加到字典數組元素?

# Dict={} 
# Key = .... 
# newvalue = .... 

if not Key in Dict: 
    Dict[Key] = [ newvalue ] 
else: 
    Dict[Key].append(newvalue) 

它的價格的四行代碼。 Python標準庫有更簡潔的方法嗎?例如

Dict.appendkeyvalue(Key, newvalue) 
+1

提示:按照慣例,大寫變量名只能用於類(但不要使用像'dict'這樣的內置名稱)。 –

+0

謝謝你的提示。 –

回答

6

您可以使用defaultdict

from collections import defaultdict 

d = defaultdict(list) 

d['something'].append(3) 
print d['something'] 
# > [3] 
+0

如果你不想成爲每個關鍵列表,寫一個簡短的函數,包含你的四行。 – Gregor

3

使用標準的字典,您可以使用setdefault()

d = {} 
d.setdefault("something", []).append(3) 

setdefault()這裏,如果它存在,則返回d["something"],否則它會創建一個新的以[]作爲它的值的字典輸入並返回它。

+0

讓我想知道爲什麼defaultdict存在! – James

+2

@Autopulated - 在這種情況下,您經常創建一個新列表,以便立即放棄它。 – mgilson

+0

@mgilson:你什麼意思?這裏沒有列表被丟棄。 –