我在玩字典时发现了这个
import sys
Square1 = {}
Square2 = {}
Square3 = {}
for i in range(1, 8):
Square1[i] = i**2
for i in range(1, 11):
Square2[i] = i**2
for i in range(1, 12):
Square3[i] = i**2
print(sys.getsizeof(Square1), len(Square1))
print(sys.getsizeof(Square2), len(Square2))
print(sys.getsizeof(Square3), len(Square3))
输出:
196 7
196 10
344 11
字典长度7和10的大小与196相同,但长度11的大小为344。 为什么它们是一样的?为什么尺寸会随着长度的增加而增加11?在Python中字典大小是如何工作的
因为字典是一个容器,sys.getsizeof不会度量容器及其所有内容的大小
您可以使用此function或更多信息here
当您创建一个空字典时,它会将内存分块预先分配给它可以存储的最初几个引用。随着字典添加更多的键值对,它需要更多的内存
但它不会随着每次添加而增长;每次需要更多的空间时,它都会添加一些内存块,这些内存块可以容纳“X”数量的键值对,一旦“X”数量被填满,另一块内存就会分配给字典
下面是一个示例代码,用于显示随着键数的增加字典大小的变化:
以下是Python 3.6.2中的输出:
此外,dictionary只存储保存键和值的内存引用,而不将键值本身存储为
dict
对象的一部分。因此,数据的类型和大小都不会影响字典的sys.getsizeof()
结果例如,下面两个dict的大小都是280字节
但是
'a'
V/s'a' * 1000000
的大小之间存在差异:相关问题 更多 >
编程相关推荐