我见过的其他Python程序员从以下用例集合模块defaultdict使用:
from collections import defaultdict
s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
def main():
d = defaultdict(list)
for k, v in s:
d[k].append(v)
我通常通过存在使用它,而不是走近这个问题:
def main():
d = {}
for k, v in s:
d.setdefault(k, []).append(v)
该文档做其实要求,使用defaultdict比较快 ,但我看到了相反的测试自己,当是真实的:
$ python -mtimeit -s "from withsetdefault import main; s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)];" "main()"
100000 loops, best of 3: 4.51 usec per loop
$ python -mtimeit -s "from withdefaultdict import main; s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)];" "main()"
100000 loops, best of 3: 5.38 usec per loop
有什么错我是如何设置的测试?
作为参考,我使用Python 2.7.3 [GCC 4.2.1(苹果公司建立5666)