如何在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