我有一個函數返回collections.OrderedDict()
這是http post的有效載荷。如何將OrderedDicts寫入文件並將其讀回列表?
我需要在http發佈失敗時記錄脫機數據,所以我想將所有的字典寫入一個文件並將其作爲列表讀回,我知道我可以創建一個列表並繼續追加到列表中,但需要是寫入文件和讀回一個列表,
可能有人請幫我解決這個問題,請建議,如果有一個更好的主意來檢索字典的項目,如列表
我有一個函數返回collections.OrderedDict()
這是http post的有效載荷。如何將OrderedDicts寫入文件並將其讀回列表?
我需要在http發佈失敗時記錄脫機數據,所以我想將所有的字典寫入一個文件並將其作爲列表讀回,我知道我可以創建一個列表並繼續追加到列表中,但需要是寫入文件和讀回一個列表,
可能有人請幫我解決這個問題,請建議,如果有一個更好的主意來檢索字典的項目,如列表
你可以轉換一個字典列表json
並將其保存到.json
文件。 然後,閱讀它將是小菜一碟。
from collections import OrderedDict
import json
dic = OrderedDict()
dic['hello'] = 'what up'
dic_2 = OrderedDict()
dic_2['hey, second'] = 'Nothing is up'
with open('file.json', 'w') as f:
dictionaries = [dic, dic_2]
f.write(json.dumps(dictionaries))
with open('file.json', 'r') as read_file:
loaded_dictionaries = json.loads(read_file.read())
print(loaded_dictionaries[0])
輸出:
{'hello': 'what up'}
乾淨只要這將作爲字典鍵/值是這些類型的:dict, list, str, int, float, bool, None
。
感謝你的迴應,隨着時間的推移,字典對象不斷增長,每當我離線我想轉儲到一個文件的字典,一旦我在線,我想發送到服務器 –
無論何時您需要更新它,只需再次打開文件,讀取文件,以便從中獲得一個「列表」,追加到列表中,使用'json.dumps(將該列表轉換爲json)列表)'並將其寫入文件 – Nether
我一直讀錯了所有的時間都沒有將列表更改回json,現在我使用json.loads將文件讀回列表並追加新的字典,然後寫回我們最後,當我需要傳遞字典時,我只是用json.loads讀取整個文件併發送它,您的解決方案效果很好,謝謝@Nether –
使用json進行數據序列化。
import json
import collections
d = collections.OrderedDict([('a', 1), ('b', 2), ('c', 3)])
s = json.dumps(list(d.items()))
print(s)
value = json.loads(s)
print(value)
json將對象序列化爲字符串'[["a", 1], ["b", 2], ["c", 3]]'
。然後json可以將數據讀回python對象。
json非常常見,並且在很多語言中都有使用。大多數web apis都使用json來幫助他們的應用程序實現RESTful。
感謝您的回覆,字典隨着時間的推移不斷增長,並且我需要附加文件,每次我得到字典對象,請建議如果你有替代 –
我將不得不看到一些代碼。如果你有多個字典,然後調用'dict.update(other_dict)'這將合併字典。 – HashSplat
你很樂意做到這一點,而不使用文件? –
'list(dictionary.items()' –
感謝彼得的回覆,文件寫入是強制性的,因爲字符可能會變成數萬,並且不建議列表:( –