簡體   English   中英

將字典存儲在文件中並部分加載的最佳方法?

[英]Best way to store dictionary in a file and load it partially?

這是將字符串字典存儲在文件中的最佳方法(因為它們很大)並將其部分加載到python中。 這里的字符串字典意味着,關鍵字將是一個字符串,而值將是一個字符串列表。

字典以附加形式存儲以檢查密鑰,如果可用,則不更新,否則更新。 然后使用密鑰進行后期處理。

通常,字典以JSON存儲。

我將在此處留下一個鏈接:

將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)

如果這是用於某種數據庫類型的,請為自己省去麻煩,並使用TinyDB 保存到光盤時,它使用JSON格式,並為您提供所需的“部分”加載。

我只推薦 TinyDB 因為這似乎與您要實現的目標最接近,如果您不喜歡這種方法,則可以嘗試使用Google谷歌搜索其他數據庫!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM