我需要初始化一个默认字典列表。如果他们是,比如说,字符串,这将是整洁的:
list_of_dds = [string] * n
...但是对于可变对象,您会直接使用这种方法:
>>> x=[defaultdict(list)] * 3
>>> x[0]['foo'] = 'bar'
>>> x
[defaultdict(<type 'list'>, {'foo': 'bar'}), defaultdict(<type 'list'>, {'foo': 'bar'}), defaultdict(<type 'list'>, {'foo': 'bar'})]
我想要的是一个可迭代的新创建的不同默认字典实例。我可以做这个:
list_of_dds = [defaultdict(list) for i in xrange(n)]
但我觉得在这里使用列表理解有点脏。我认为有更好的方法。在那儿?请告诉我它是什么。
编辑:
这就是为什么我觉得列表理解不是最理想的。我通常不是预优化类型,但我不能让自己忽略这里的速度差异:
>>> timeit('x=[string.letters]*100', setup='import string')
0.9318461418151855
>>> timeit('x=[string.letters for i in xrange(100)]', setup='import string')
12.606678009033203
>>> timeit('x=[[]]*100')
0.890861988067627
>>> timeit('x=[[] for i in xrange(100)]')
9.716886043548584