如何在Python中保存大字典(不是巨大的)?
5 个回答
2
那 numpy.savez 呢?这个方法可以保存多个numpy数组,而且它们是以二进制格式保存的,所以应该比用pickle保存要快。
3
文件系统本身其实是一个常常被忽视的数据结构。你可以把它想象成一个字典,这个字典把你的键(也就是你用来查找的名字)和文件名对应起来。然后每个文件里面就存放着一个1000x1000的数组。把这个字典保存起来是很快很简单的,而数据文件里就可以直接放原始数据(这部分数据numpy可以很容易地加载)。
6
如果你有一个字典,里面的键是字符串,而值是数组,像这样:
>>> import numpy
>>> arrs = {'a': numpy.array([1,2]),
'b': numpy.array([3,4]),
'c': numpy.array([5,6])}
你可以使用 numpy.savez 把它们按键保存到一个压缩文件里:
>>> numpy.savez('file.npz', **arrs)
要把它加载回来:
>>> npzfile = numpy.load('file.npz')
>>> npzfile
<numpy.lib.npyio.NpzFile object at 0x1fa7610>
>>> npzfile['a']
array([1, 2])
>>> npzfile['b']
array([3, 4])
>>> npzfile['c']
array([5, 6])