如何在Python中设置字典的初始大小?

我将大约400万个不同的键放入Python字典中。创建此字典大约需要15分钟,并且会消耗我的计算机上大约4GB的内存。完全创建字典后,查询字典很快。

我怀疑字典的创建会消耗大量资源,因为字典经常被重新整理(因为字典的数量巨大地增长)。是否可以在Python中创建具有一些初始大小或存储桶编号的字典?

我的字典从数字指向一个对象。

class MyObject(object):

def __init__(self):

# some fields...

d = {}

d[i] = MyObject() # 4M times on different key...

回答:

对于性能问题,总是最好进行衡量。以下是一些时间安排:

 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

最后一个选项不做任何调整大小,它只是复制集合中的哈希值并增加引用。如您所见,调整大小不会花费很多时间。可能是您的对象创建缓慢。

以上是 如何在Python中设置字典的初始大小? 的全部内容, 来源链接: utcz.com/qa/423134.html

回到顶部