将字典存储在文件中并部分加载的最佳方法?

时间:2018-10-04 12:07:16

标签: python

这是将字符串字典存储在文件中的最佳方法(因为它们很大)并将其部分地加载到python中。这里的字符串字典意味着,关键字将是一个字符串,值将是一个字符串列表。

字典以附加形式存储以检查密钥,如果可用,则不更新或否则更新。然后使用密钥进行后期处理。

4 个答案:

答案 0 :(得分:1)

通常,字典存储在JSON中。

我将在此处留下一个链接:

Convert Python dictionary to JSON array

答案 1 :(得分:0)

您可以简单地将字典写入文本文件,然后创建一个仅从该文本文件中提取某些键和值的新字典。

但是您最好探索json模块。

这是一种使用json模块将名为“样本”的字典写到文件的简单方法:

import json
with open('result.json', 'w') as fp:
    json.dump(sample, fp)

在加载方面,我们需要了解更多有关如何选择从JSON文件加载哪些键的信息。

答案 2 :(得分:0)

上面的答案很好,但是我讨厌使用JSON,在数据损坏之前,我一直在用pickle遇到问题,所以我要做的是,我使用numpy的保存和加载

要保存np.save(filename,dict)

加载dict = np.load(filename).item()

真的很简单并且效果很好,就部分加载而言,您总是可以将字典拆分成多个较小的字典,然后将它们保存为单独的文件,也许不是一个很具体的解决方案,但是可以工作

要拆分字典,您可以执行以下操作

temp_dict = {}
for i,k in enumerate(dict.keys()):
    if i%1000 == 0:
        np.save("records-"+str(i-1000)+"-"+str(i)+".npy",temp_dict)
        temp_dict = {}

    temp_dict[k]=dict[k].value()

然后执行加载操作

my_dict={}
all_files = glob.glob("*.npy")
for f in all_files:
     dict = np.load(filename).item()
     my_dict.update(dict)

答案 3 :(得分:0)

如果这是用于某种数据库类型的,请为自己省去麻烦,并使用TinyDB。保存到光盘时,它使用JSON格式,并为您提供所需的“部分”加载。

我只推荐 TinyDB ,因为这似乎与您要实现的目标最接近,如果您不喜欢,请尝试使用其他数据库有很多吨!