对于性能问题,总是最好进行衡量。以下是一些时间安排:
d = {}
for i in xrange(4000000):
d[i] = None
# 722ms
d = dict(itertools.izip(xrange(4000000), itertools.repeat(None)))
# 634ms
dict.fromkeys(xrange(4000000))
# 558ms
s = set(xrange(4000000))
dict.fromkeys(s)
# Not including set construction 353ms
最后一个选项不做任何调整大小,它只是复制集合中的哈希值并增加引用。如您所见,调整大小不会花费很多时间。可能是您的对象创建缓慢。