2017-07-29 93 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得到尺寸信息

相關問題