python - 在 python 中为空字典分配了多少空间?

标签 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/

相关文章:

java - 在 Java 中使用 HashMap 创建真实的映射

c# - .NET:由于字典,HttpClient 中的 CPU 使用率为 100%?

DD-MON-YY HH :MM:SS. NS PM格式日期的Python/Pandas Datetime转换

c++ - 使用单词键将多个行号的 vector 添加到我的 map

Python 列表和字典交叉引用

c# - 如何从对象中的字典访问值?

python - 使用 model.predict() 显示准确性和损失

python - 为什么此代码对 NULL 句柄调用 CloseHandle?

python - 您将如何确定 Python 类的每个属性和方法的定义位置?

python - 在 Python 中将文件列表连接成字符串列表