我想將一個字典轉儲到一個 json 文件中,然后加載它以便我使用它。dic = {}for n in range(1,10): if n%2==0: dic[n] = n**2 else: dic[str(n)] = n**2print(dic)打印輸出是:{'1': 1, 2: 4, '3': 9, 4: 16, '5': 25, 6: 36, '7': 49, 8: 64, '9': 81}這是我想要的結果但是當我json.dump和json.load它...with open("myfile.json","w") as fp: json.dump(dic,fp)with open("myfile.json") as fq: newdic=json.load(fq)print(newdic)輸出是:{'1': 1, '2': 4, '3': 9, '4': 16, '5': 25, '6': 36, '7': 49, '8': 64, '9': 81}所有的鍵都變成了字符串。在這種簡單的情況下是可以避免的,但是在復雜的情況下我該怎么辦呢?任何幫助表示贊賞。
3 回答
肥皂起泡泡
TA貢獻1829條經驗 獲得超6個贊
在 JSON 中,鍵必須是字符串。
因此,一旦將字典轉儲為 JSON,就無法在再次加載時按原樣返回。這種信息已經不為人知。
如果需要,您可以針對其他復雜情況檢查此問題。它是關于使用pickle而不是JSON: https ://stackoverflow.com/a/17328255/8528141
慕絲7291255
TA貢獻1859條經驗 獲得超6個贊
正如其他答案所暗示的那樣,JSON 確實要求所有鍵都只能是字符串。因此,如果您將字典存儲為 JSON 格式,那么您所有的鍵都會變成字符串,并且在加載字典時您會得到字符串中的鍵。
如果你想以相同的格式存儲和加載 dict,那么你可以將 key_type 與 dict 一起保存,或者你可以考慮pickle存儲和加載 Python 數據結構的庫而不改變其中的任何內容。
添加回答
舉報
0/150
提交
取消
