我也想創建一個結構化的 JSON 物件:
{
"dataset": "xx",
"test": "trial",
"results": {
"TP": 5,
"FP": 1,
"FN": 1,
"TN": 2
}
}
我以這種方式回圈計算這些結果:
json_obj = {}
for i in range(len(dictionary)):
dataset, test = retrieve_data()
tp, fp, tn, fn = calculate_score()
json_obj = json.dumps({'dataset': dataset,
'test': test,
'results': {'TP': tp, 'FP': fp, 'FN': fn, 'TN': tn}})
因為我回圈了 4 次,所以我希望有一個像這樣的 JSON 物件:
{
"dataset": "1",
"test": "trial1",
"results": {
"TP": 5,
"FP": 3,
"FN": 2,
"TN": 5
},
"dataset": "2",
"test": "trial2",
"results": {
"TP": 6,
"FP": 4,
"FN": 12,
"TN": 25
},
"dataset": "3",
"test": "trial3",
"results": {
"TP": 15,
"FP": 1,
"FN": 11,
"TN": 2
},
"dataset": "4",
"test": "trial4",
"results": {
"TP": 5,
"FP": 11,
"FN": 1,
"TN": 21
}
}
如果我使用以下命令訪問第一個元素:
json_obj = json.dumps(json_obj)
print (json_obj[0])
我得到
"dataset": "1",
"test": "trial1",
"results": {
"TP": 5,
"FP": 3,
"FN": 2,
"TN": 5
}
問題是,如果我運行代碼,我只會得到"輸出。如果我列印完整的 json_obj 我得到字串:
"{\"dataset\": \"1\", \"test\": \"trial1\", \"results\": {\"TP\": 5, \"FP\": 3, \"FN\": 2, \"TN\": 5}}"
看起來它正在創建一個字串而不是 json 物件。錯誤在哪里?
uj5u.com熱心網友回復:
當您呼叫時,json_obj = json.dumps(somthingOrOther)您正在創建一個新物件并覆寫上一次迭代中的物件。所以我希望你的代碼的輸出字串是:
{"dataset": "dataSet-4", "test": 3, "results": {"TP": 9, "FP": 10, "FN": 7, "TN": 10}}
注意:我對results. 我不知道如何向 json 物件添加元素,但您可以解決它。只需將所有資料寫入串列,然后使用 .json 將其轉換為 json 物件json.dumps。這看起來像這樣。
import random, json
def calculate_score():
return random.randint(0,10), random.randint(0,10),random.randint(0,10),random.randint(0,10)
json_obj_list = []
for i in range(5):
tp, fp, tn, fn = calculate_score()
json_obj_list .append({'dataset': f"dataSet-{i}",
'test': 3, #some random int
'results': {'TP': tp, 'FP': fp, 'FN': fn, 'TN': tn}})
json_dump = json.dumps(json_obj_list, indent="\t")
print(json_dump)
這將列印以下內容
[
{
"dataset": "dataSet-0",
"test": 3,
"results": {
"TP": 9,
"FP": 10,
"FN": 1,
"TN": 4
}
},
{
"dataset": "dataSet-1",
"test": 3,
"results": {
"TP": 2,
"FP": 7,
"FN": 5,
"TN": 2
}
},
{
"dataset": "dataSet-2",
"test": 3,
"results": {
"TP": 3,
"FP": 8,
"FN": 5,
"TN": 8
}
},
{
"dataset": "dataSet-3",
"test": 3,
"results": {
"TP": 3,
"FP": 5,
"FN": 8,
"TN": 8
}
},
{
"dataset": "dataSet-4",
"test": 3,
"results": {
"TP": 3,
"FP": 1,
"FN": 6,
"TN": 5
}
}
]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/312953.html
上一篇:是否可以選擇為標記添加主題?
