当前位置: 代码迷 >> python >> 将字典存储在文件中并部分加载的最佳方法?
  详细解决方案

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

热度:81   发布时间:2023-07-16 09:59:20.0

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

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

通常,字典以JSON存储。

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

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

但您最好探索json模块。

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

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

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

上面的答案很好,但是我讨厌使用JSON,在破坏数据之前,我一直遇到泡菜问题,所以我要做的是,我使用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)

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

我只推荐 TinyDB 因为这似乎与您要实现的目标最接近,如果您不喜欢这种方法,则可以尝试使用Google谷歌搜索其他数据库!

  相关解决方案