如果你有看懂 json 格式,那你應該能注意到這完全就是 python 的字典 dict
的格式,幾乎一模一樣。
區別在於 python 允許使用單引號 '
表達字符串,而 json 僅允許使用雙引號 "
所以你只需要跟著題目的指示操作字典即可。
如果你成功按照正確的格式將資料放進字典裡,那你可能會遇到另一個問題:直接 print()
字典出來的東西,格式不符合 json 格式要求,所有的引號都會被 python 使用單引號 '
表達( json 要的是雙引號 "
),且每個逗號、冒號後面都會有多餘的空格。
my_dict = {"apple": {"color": "red", "cost": "100"}, |
當然,也別期待 pprint 能處理,畢竟它本來就不是用來幹這種事的
from pprint import pprint |
這時候就可以使用標準庫中的 json 了,可以透過 import json
使用他
python 的 json 主要用途有兩個:
dict
dict
轉換成 json 格式的字符串
一般 json 常用的函數可以分成兩種,一類就是讀取 json 格式的檔案、字串,並轉換成 dict
,可以透過 load
和 loads
這兩個函數做到。
load
讀取的是文件對象,你得傳入一個路徑給他loads
讀取的是符合 json 格式的字串,只要你給的出來,那不用找檔案也可以。
另一種就是這題會用到的,將 dict
轉換成 json 格式的字串、檔案,我們會用到 dump
和 dumps
這兩個函數。
dump
可以將傳入的 dict
轉換成 json 格式的檔案,使用他的話,會在電腦的指定路徑中創建一個新的 json 檔案,裡面放的就是字典的內容。dumps
也可以將傳入的 dict
轉換成 json 格式,但它會回傳一份字串,而不是創建一份新的檔案。
理所當然的,這裡是 zerojudge,原則上不允許我們上傳任何會修改系統文件結構、內容的程式碼,所以 dump
不能用,要用 dumps
只需要把我們做出來的字典餵給 dumps
,就可以得到一份符合 json 格式的字串了。
import json |
可以看到輸出的結果是符合 json 格式要求的,所有的引號都是用雙引號 "
表達,但如果就這樣直接輸出的話你還是不能答對這題,因為這題比 json 要求還嚴格,在原本的基礎上更要求所有的逗號 ,
和冒號 :
不要有多餘的空白。
這也是可以解決的,python 的 json.dumps
允許你微調格式表達的方式,我們可以透過修改 separators
參數,讓這些符號的後方不再有多餘空白,像這樣:
import json |
這樣就可以讓格式不僅僅符合 json 格式要求,同時也符合題目的要求。