我有一個函數:嘗試追加項目爲默認字典
#Should be named tryAppendingToListInADict but I'm too lazy for that long of a name
def tryAppendingToDict(dictionary, key, item):
try:
#append to an existing list
dictionary[key].append(item)
except KeyError:
#list doesn't exist yet, so make one
dictionary[key] = [item]
在我使用此功能在一個字典大多數情況下,我們稱之爲defaultDictOfLists
,在我的代碼看起來像
tryAppendingToDict(defaultDictOfLists, 'spam', 'eggs')
tryAppendingToDict(defaultDictOfLists, 'spam', 'beacon')
tryAppendingToDict(defaultDictOfLists, 'not spam', 'yuck!')
#...
tryAppendingToDict(differentDict, 'spam', 'I don't like spam!')
所以我想嘗試爲我的函數做一個關鍵字參數,它會假設你將項目追加到defaultDictOfLists
。然而,這裏的主要問題是,這一功能由單獨的模塊進口(而且應該繼續存在),因此一個簡單
def tryAppendingToDict(key, item, dictionary = defaultDictOfLists):
提出了一個NameError
和globals()['defaultDictOfLists']
提出了一個KeyError
。
有沒有辦法解決它?它會澄清我的代碼並加速編碼過程。
編輯,因爲這個字典傳遞給Django模板和那些不處理defaultdicts很好由於某種原因,我沒有使用defaultdict(list)
。所以我不得不將這個defaultdict轉換回正規字典,如果我記得正確的話,這需要O(n)個時間。
您一直使用術語「defaultDict」,但好像您試圖實現看起來就像['defaultdict'](http://docs.python.org/2/library/collections的.html#collections.defaultdict)。如果您使用2.5或更高版本,則可以使用該版本。 –
我會爲defaultDictOfLists – njzk2