我想從我保存在 TXT 檔案中的以下預格式化字典中創建一個嵌套字典。我想將這些附加到新字典并得到如下結果:
{ "Wednesday": {"Forecast": 18.1, "Visitors": 122},
"Wednesday": {"Forecast": 10.4, "Visitors": 93},
"Wednesday": {"Forecast": 15.6, "Visitors": 105}
}
這就是我在 TXT 檔案中存盤資料/格式化字典的方式。
{"Wednesday": {"Forecast": 18.1, "Visitors": 122}}
{"Wednesday": {"Forecast": 10.4, "Visitors": 93}}
{"Wednesday": {"Forecast": 15.6, "Visitors": 105}}
這就是我創建一行資料的方式:
write_dict = {Date: {"Forecast": Forecast, "Visitors": Visitors}}
我已經嘗試了很多.. 仍然無法將這些資料轉換為簡單的嵌套字典。我嘗試使用 .update() 在回圈中添加這些。然而,這導致嵌套字典僅包含最后一個字典。我該怎么辦?存盤資料的方式可能是錯誤的嗎?
提前致謝!版本:3.8
編輯:
new_datenumber = ''
def write_data(Visitors):
with open('numbers.txt', 'r') as file:
datenumberstr = file.read().rstrip()
new_datenumber = Date '_' datenumberstr
temp_dict = f'"{new_datenumber}"' ': ' '{"Forecast": ' f'{Forecast}, ' '"Visitors": ' f'{Visitors}' '}'
print(new_datenumber)
datenumber = open('numbers.txt','w')
datenumber.write(str(int(datenumberstr) 1))
datenumber.close()
rest_data = open('rest_data.txt', 'a')
rest_data.write(f'{temp_dict}\n')
rest_data.close()
algorithm_examp()
return new_datenumber
def algorithm_examp():
rest_data = open('rest_data.txt', 'r')
with rest_data as fp:
newdict = {}
for line in lines_that_contain(Date, fp):
no_n_line = line.strip()
newdict[new_datenumber].update(no_n_line)
print(newdict)
def lines_that_contain(string, fp):
return [line for line in fp if string in line]
我希望得到什么:
{ "Wednesday_1": {"Forecast": 18.1, "Visitors": 122},
"Wednesday_2": {"Forecast": 10.4, "Visitors": 93},
"Wednesday_3": {"Forecast": 15.6, "Visitors": 105}
}
現在資料被存盤為:
"Wednesday_0": {"Forecast": 18.1, "Visitors": 120}
"Wednesday_1": {"Forecast": 19.5, "Visitors": 125}
uj5u.com熱心網友回復:
不完全確定輸出應該是什么。該問題在規定的要求和樣本輸出方面存在矛盾。然而:
import json
days = {}
out_dict = {}
with open('rest_data.txt') as fluxx:
for line in fluxx:
dict_ = json.loads(line)
for k, v in dict_.items():
days[k] = days.get(k, 0) 1
out_dict[f'{k}_{days[k]}'] = v
print(out_dict)
輸出:
{'Wednesday_1': {'Forecast': 18.1, 'Visitors': 122}, 'Wednesday_2': {'Forecast': 10.4, 'Visitors': 93}, 'Wednesday_3': {'Forecast': 15.6, 'Visitors': 105}}
uj5u.com熱心網友回復:
您不能有重復的“星期三”鍵,否則只會保存最后一個值。
改變
{"Wednesday": {"Forecast": 18.1, "Visitors": 122}}
{"Wednesday": {"Forecast": 10.4, "Visitors": 93}}
{"Wednesday": {"Forecast": 15.6, "Visitors": 105}}
到
{"Wednesday_1": {"Forecast": 18.1, "Visitors": 122}}
{"Wednesday_2": {"Forecast": 10.4, "Visitors": 93}}
{"Wednesday_3": {"Forecast": 15.6, "Visitors": 105}}
uj5u.com熱心網友回復:
您不能有多個具有相同鍵的條目。您可以為一個鍵設定一個條目,并將一組值作為該鍵的值。因此,您可以執行以下操作:
my_dict = defaultdict(list)
with open 'my_txt.txt' as t:
for line in t:
try:
d = eval(line)
for k in d.keys():
my_dict[k].append(d[k])
except Exception as err:
print('Exception {} occurred while processing {}'.format(err, line))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/476892.html
下一篇:內容旋轉-Python
