<分区>
如果我们创建一个空字典,例如:idict = {}
,这个字典分配了多少个空格?我知道对于列表,如果我们初始化一个像 ilist = []
这样的列表,它总是会过度分配大小,首先是 4 个空间,然后是 8 个空间。
字典呢?
标签 python dictionary
<分区>
如果我们创建一个空字典,例如:idict = {}
,这个字典分配了多少个空格?我知道对于列表,如果我们初始化一个像 ilist = []
这样的列表,它总是会过度分配大小,首先是 4 个空间,然后是 8 个空间。
字典呢?
最佳答案
好吧,字典不会在其中存储实际的字符串,它的工作方式有点像 C/C++ 指针,因此对于每个元素,您只会在字典中获得恒定的开销。
测试
import sys
x = {}
sys.getsizeof(x)
字典本身由许多桶组成,每个桶包含:
当前存储对象的哈希码(不可预测 由于碰撞解决,从桶的位置 使用的策略)
指向键对象的指针指向值的指针
对象在 32 位上总共至少有 12 个字节,在 64 位上至少有 24 个字节。
字典从 8 个空桶开始,并在达到其容量时通过将条目数加倍来调整大小(当前为 (2n+1)/3)。
关于python - 在 python 中为空字典分配了多少空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31333537/