2017-07-29 95 views
1

如何手动计算字典的大小(它在内存中占用的字节数)。我读到最初它是280字节,在第6个密钥它增加,然后在第86个等。我想计算当我有超过10000个按键时它将占用的大小。以字节为单位的字典大小

回答

3

你可以做一个快速检查与sys.getsizeof()(它将返回字节对象的大小):

>>> import sys, itertools 
>>> sys.getsizeof(dict(zip(range(1), itertools.cycle([1])))) 
280 
>>> sys.getsizeof(dict(zip(range(5), itertools.cycle([1])))) 
280 
>>> sys.getsizeof(dict(zip(range(6), itertools.cycle([1])))) 
1048 
>>> sys.getsizeof(dict(zip(range(85), itertools.cycle([1])))) 
3352 
>>> sys.getsizeof(dict(zip(range(86), itertools.cycle([1])))) 
12568 
>>> sys.getsizeof(dict(zip(range(87), itertools.cycle([1])))) 
12568 
>>> sys.getsizeof(dict(zip(range(10000), itertools.cycle([1])))) 
786712 

如果你有兴趣在Python字典的实际内部工作,该dictobject.c是明确资源(最新Python 3.6分支的here)。另外,请看dictnotes.txt

5

sys.getsizeof将有助于在这种情况下:

from sys import getsizeof 

dct = {'a': 5, 'b': 7} 

print(getsizeof(dct)) 

尤其是对字典的大小将取决于你的Python版本(实施最近已改变)。

一个快速的方法来创建一个N尺度的字典是:

from itertools import zip_longest 
dct = dict(zip_longest(range(N),(), fillvalue=None)) 
# {0: None, 1: None, 2: None, ....} 

这应该帮助测试你的假设您的特定Python版本。

this question可能有关系。

0

使用sys.getsizeof得到尺寸信息

相关问题