gpt4 book ai didi

python - 为什么空字典的大小与 Python 中非空字典的大小相同?

转载 作者:IT王子 更新时间:2023-10-28 23:36:56 26 4
gpt4 key购买 nike

这可能是微不足道的,但我不确定我是否理解,我尝试谷歌搜索但没有找到令人信服的答案。

>>> sys.getsizeof({})
140
>>> sys.getsizeof({'Hello':'World'})
140
>>>
>>> yet_another_dict = {}
>>> for i in xrange(5000):
yet_another_dict[i] = i**2

>>>
>>> sys.getsizeof(yet_another_dict)
98444

我怎么理解这个?为什么空字典的大小与非空字典的大小相同?

最佳答案

有两个原因:

  1. 字典只保存对对象的引用,而不是对象本身,因此它的大小与其包含的对象的大小无关,而是与字典包含的引用(项目)的数量相关。

  2. 更重要的是,字典为 block 中的引用预先分配内存。因此,当您创建字典时,它已经为第一个 n 引用预分配了内存。当它填满内存时,它会预先分配一个新 block 。

您可以观察该行为,运行下一段代码。

d = {}
size = sys.getsizeof(d)
print size
i = 0
j = 0
while i < 3:
d[j] = j
j += 1
new_size = sys.getsizeof(d)
if size != new_size:
print new_size
size = new_size
i += 1

打印出来的:

280
1048
3352
12568

在我的机器上,但这取决于架构(32 位、64 位)。

关于python - 为什么空字典的大小与 Python 中非空字典的大小相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18558865/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com