dram.me

学习Python: defaultdict

defaultdict是Python2.5新加入的一个容器,在collections模块中。至于这个有什么功用,可以看一下GvR最初的Proposal。那个Thread很长,看了几条回复就再没耐性看下去了,直接跳到GvR的阶段性总结,其实大概也是最终版本了,因为我找不着GvR在后续邮件中再有长篇大论了。当然那只是Proposal,最终实现还是要看文档和代码。

插曲:当我正纳闷怎么没有PEP时,看到这么一段:

Fredrik Lundh fredrik at pythonware.com
Fri Feb 17 14:16:59 CET 2006

> I would like to add something like this to the collections module, but a PEP is
> probably needed to deal with issues like:

frankly, now that Guido is working 50% on Python, do we really have to use
the full PEP process also for simple things like this?

I'd say we let the BDFL roam free.

(if he adds something really lousy, it can always be tweaked/removed before
the next final release.  not every checkin needs to be final...).

言归正传,其实上面只是defaultdict的历史,看与不看关系不大,关键还是看文档,Python的文档一向是我最欣赏的地方:)。具体位置在这

呃~发现没啥好解释的了,文档加上紧随其后的Example应该已经讲解得非常详细了。其实就是在创建字典时给字典提供一个默认值(精确一点是一个factory,也就是一个函数,调用一下产生一个默认值),之后你就放心大胆地去用key来索引那字典吧,如果找不到这个key,defaultdict会调用factory产生一个值并赋给key。