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

时间:2015-07-10 06:03:30

标签: python dictionary

如果我们创建一个空字典,例如:idict = {},为这个字典分配了多少个空格?我知道列表,如果我们初始化像ilist = []这样的列表,它将始终过度分配大小,首先是4个空格,然后是8。 字典怎么样?

2 个答案:

答案 0 :(得分:2)

好吧,字典不会将实际字符串存储在其中,它有点像C / C ++指针,所以你只能在字典中为每个元素获得一个不变的开销。

针对

进行测试
import sys
x = {}
sys.getsizeof(x)

字典本身由许多桶组成,每个桶包含:

  • 当前存储的对象的哈希码(不可预测) 由于碰撞解决而从铲斗的位置开始 使用的策略)

  • 指向键对象的指针,指向值

  • 的指针
  • 对象总共至少12字节在32位,24字节在64位。

字典以8个空桶开始,每当达到其容量时(目前为(2n + 1)/ 3),将条目数加倍,将其调整大小。

答案 1 :(得分:0)

说实话,它实际上就像associative map中的C++一样..如果你曾经使用C++那么..如果你看到Python解释器的源代码,你会看到它使用你的堆内存部分将数据存储到两个类型&使用指针将一个数据指向另一个数据,与map中的C++完全相同。在我的系统中它是280 ..现在@Navneet说你可以使用sys.getsizeof来计算大小。但请记住,它是系统特定的&因此你的系统可能不会给你280字节。理解如果它是280字节,则意味着它使用几个关联指针的精巧线程来存储数据结构的一个点