我從這個角度問我這樣的觀點,我的印象是,它是比請求寬恕更Pythonic。Pythonic的方式,以確保列表存在於字典密鑰之前追加
所以,我有一些代碼,就像:
d = dict()
try:
d[est['state']].append(est)
except Exception:
d[est['state']] = []
d[est['state']].append(est)
在上面的代碼中,我在重複自己,這是相當跛腳的費用請求原諒,而不是許可!所以,我不知道,我寧願:
d = dict()
if est['state'] in d:
d[est['state']].append(est)
else:
d[est['state']] = [est]
這兩種方法都是粗糙的。有什麼更好的方法來做到這一點?最好的我發現迄今:
from collections import defaultdict
d = defaultdict(list)
d[est['state']].append(est)
是啊,用'defaultdict'或'dict.setdefault'如果你沒有做2.5。我認爲你已經回答了你自己的問題:) – 2013-02-20 01:57:56
'defaultdict'太棒了。現在,如果只有'defaultOrderedDict'在stdlib中... – nneonneo 2013-02-20 01:59:54
完全錯過了'dict.setdefault'。看起來它與'dict.get'類似,但除了返回鍵值之外,還會設置默認值。野生! – 2013-02-20 02:02:14