📜  Python内存消耗:字典 VS 元组列表

📅  最后修改于: 2022-05-13 01:54:54.923000             🧑  作者: Mango

Python内存消耗:字典 VS 元组列表

在本文中,我们将看到字典和元组列表中的内存消耗。

dict 与元组列表的内存消耗

字典比元组列表占用更多的空间。与元组列表相比,即使是空字典也会占用很多空间。

示例 1:我们可以清楚地看到,当两者都为空时,两种数据类型的内存消耗之间存在巨大差异。

Python3
import sys
 
dict = {}
print(dict)
 
# We will get size of empty dict
print(sys.getsizeof(dict))
 
t1 = ()
d = list(t1)
print(d)
 
# We will get size of empty list of tuples
print(sys.getsizeof(d))


Python3
import sys
 
# for dict
dict = {(1, "G"), (2, "F"), (3, "G")}
print(dict)
print(sys.getsizeof(dict))
 
# for list of tuples
list1 = (1, 2, 3)
list2 = ("G", "F", "G")
LoT = list(zip(list1, list2))
print(LoT)
print(sys.getsizeof(LoT))


Python3
import sys
 
# for dict
dict = {}
for i in range(1, 101):
    dict[i] = i
print(dict)
print(sys.getsizeof(dict))
 
# for list of tuples
lst = list(range(1, 101))
print(lst)
print(sys.getsizeof(lst))


输出:

{}
240
[]
64

示例 2:在此示例中,因此 dict 和元组列表中有 3-4 个元素。

Python3

import sys
 
# for dict
dict = {(1, "G"), (2, "F"), (3, "G")}
print(dict)
print(sys.getsizeof(dict))
 
# for list of tuples
list1 = (1, 2, 3)
list2 = ("G", "F", "G")
LoT = list(zip(list1, list2))
print(LoT)
print(sys.getsizeof(LoT))

输出:

{(3, 'G'), (1, 'G'), (2, 'F')}
224
[(1, 'G'), (2, 'F'), (3, 'G')]
112

同样,我们可以比较内存消耗在 dict 中为 224 字节,而在元组列表中为 112。

示例 3:让我们考虑 dict 和元组列表中的 1-100 个元素并检查结果。

Python3

import sys
 
# for dict
dict = {}
for i in range(1, 101):
    dict[i] = i
print(dict)
print(sys.getsizeof(dict))
 
# for list of tuples
lst = list(range(1, 101))
print(lst)
print(sys.getsizeof(lst))

输出:

对于更大数量的元素,我们可以清楚地看到内存消耗没有可比性。 dict 几乎是 100 个元素的元组列表的 4.7 倍。如果我们有十万个元素要存储,只需考虑一个 dict 占用的内存。

我们已经确定了添加元素后两个对象的大小变化,如下所述。

Emptydatatypesmemory consumption
64list of tuplesincreases by 64 after every 8 elements
240dictincreases to 368 from 6th element;1184 from 22nd element; 2280 from 43rd element; 4704 from 86th; 9320 from 171st