更快地生成默认字典

时间:2017-03-10 01:32:53

标签: python dictionary

生成具有特定默认值的字典有更快的方法吗?我基本上想要一个等价的

arrays = [True] * (n+1)

但是对于字典。我目前有:

dicts = dict([(i,True) for i in range(0,n+1)])

问题是n = 1000000,这个实现的时间是数组的0.016s和dicts的0.318。有没有更快的方法为字典做这个?

1 个答案:

答案 0 :(得分:1)

烨。 dict.fromkeys is designed for this exact use case。您的示例dicts可以直接使用:

dicts = dict.fromkeys(range(n + 1), True)

稍慢但更灵活的是dict理解(2.7 / 3.1 +):

dicts = {i: True for i in range(n + 1)}

3.x会慢一点,比2.x慢一些(因为True是3.x中的一个关键字,并没有调用LEGB查找,但它&#39 ; s只是2.x中的普通内置名称,因此必须在每次使用时在引擎盖下执行多次dict查找,以防它被重新分配)。在任何一种情况下,dict.fromkeys都会同样快,因为True只会查找一次。