我想为Gauss实现做proram,我想在一个JSON上保存每个迭代,但是我有一些麻烦,因为我的代码只将最后一个迭代保存到Json
import json
iterasi={
"iterasi":None,
"x1":0,
"x2":0,
"x3":0,
}
for x in range (0,11):
iterasi["iterasi"]=x
iterasi["x1"]=6-iterasi["x2"]-iterasi["x3"]
iterasi["x2"]=(2-iterasi["x1"]+iterasi["x3"])/2
iterasi["x3"]=(10-2*iterasi["x1"]-iterasi["x2"])/2
try:
with open("Gauss Siedel.json", "r") as database:
new_data = json.load(database)
except FileNotFoundError:
with open("Gauss Siedel.json", "w") as database:
json.dump(iterasi, database, indent=4)
else:
new_data.update(iterasi)
print(new_data)
with open("Gauss Siedel.json", "w") as database:
json.dump(new_data, database, indent=4)发布于 2022-09-15 17:37:18
new_data是dictionary (字典可能只有一个键iterasi等等),因此它取代了以前的值。
你应该把它们保留为list of dictionares
[{"iterasi": val1, "x1": ... }, {"iterasi":, val2, "x1": ...}, ...]. 以及这个列表中的append()新字典。
或者你应该把它们保留为dictionary of lists
{"iterasi": [ val1, val2, ... ], "x1": [...], ...}并将值附加到这些变量。但这需要更多的代码。
使用list of dictionares的版本
import json
iterasi = {
"iterasi": None,
"x1": 0,
"x2": 0,
"x3": 0,
}
#all_results = []
for x in range(11):
iterasi["iterasi"] = x
iterasi["x1"] = 6-iterasi["x2"]-iterasi["x3"]
iterasi["x2"] = (2-iterasi["x1"]+iterasi["x3"])/2
iterasi["x3"] = (10-2*iterasi["x1"]-iterasi["x2"])/2
try:
print('read')
with open("Gauss Siedel.json", "r") as database:
all_results = json.load(database)
except FileNotFoundError:
print('new list')
all_results = []
finally:
print('append')
all_results.append(iterasi)
print(all_results)
print('write')
with open("Gauss Siedel.json", "w") as database:
json.dump(all_results, database, indent=4)https://stackoverflow.com/questions/73732965
复制相似问题