我从这个角度问我这样的观点,我的印象是,它是比请求宽恕更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