我在python的“字母”中嵌套了字典。我想將所有物件寫到一個檔案中,這樣當程式重新運行時,每個字典都可以匯入到頂部字典“字母”中,然后附加額外的用戶輸入/字典。
我認為我的問題在于沒有為每個嵌套字典正確使用 json.dumps() 。*我知道我的字典名稱需要是唯一的,正在努力。
import json
letter_dict = {}
print('letters dict:', letter_dict)
for number in range(1, 6):
print('what letter is in position ', number, '?:')
letter = input()
if letter == '':
print('no additional inputs')
break
else:
code = input('what code?:')
#position = input('what position?:')
letter_dict['letter'] = letter
letter_dict['code'] = code
letter_dict['position'] = number
print(letter)
print(code)
#print(position)
print(number)
print(letter_dict)
with open('letters.txt', 'a') as file:
dictname = "'dict" str(number) "': "
file.write(dictname)
file.write(json.dumps(letter_dict))
file.write(',\n')
字母.txt =
'dict1': {"letter": "a", "code": "y", "position": 1},
'dict2': {"letter": "p", "code": "y", "position": 2},
'dict1': {"letter": "a", "code": "y", "position": 1},
匯入功能:
import json
with open('letters.txt', 'r') as file:
print(json.load(file))
錯誤:
File "/usr/lib/python3.9/json/__init__.py", line 293, in load
return loads(fp.read(),
File "/usr/lib/python3.9/json/__init__.py", line 346, in loads
return _default_decoder.decode(s)
File "/usr/lib/python3.9/json/decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python3.9/json/decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
uj5u.com熱心網友回復:
與其試圖給自己寫一個有效的,不如json讓json.dump他們為你做繁重的作業。使用main_dict變數來收集 subdicts,您可以將其轉儲到您的檔案中:
import json
main_dict = {}
for number in range(1, 6):
letter_dict = {}
letter = input(f'what letter is in position {number}? ')
if letter:
code = input('what code?:')
else:
print('no additional inputs')
break
letter_dict['letter'] = letter
letter_dict['code'] = code
letter_dict['position'] = number
main_dict[f'dict{number}'] = letter_dict
with open('letters.json', 'w') as file:
json.dump(main_dict, file)
請注意,我不會letters.txt以附加模式打開檔案,因為您的程式的第二次運行會在第一個字典之后附加另一個字典,從而使json無效。如果要追加,請將json檔案加載到 中main_dict,添加鍵值對main_dict并再次轉儲。
uj5u.com熱心網友回復:
我不知道是不是問題,但您的檔案不是有效的 JSON,
- 您必須使用雙引號而不是簡單的
- 最后的逗號不應該在那里
- 您必須將您的 dict 放入大括號中
- 不要重復 dict 鍵。
有效檔案將是:
{
"dict1": {"letter": "a", "code": "y", "position": 1},
"dict2": {"letter": "p", "code": "y", "position": 2},
"dict3": {"letter": "a", "code": "y", "position": 1}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/429006.html
上一篇:字典理解Bigram
