官方解答|訊號交換報表
官方解答
Python #434:訊號交換報表
解題規則
檢視工具收到 JSON 格式的訊號評估紀錄,請篩選並整理指定欄位。
先用 json.loads 解析 text,保留「全部紀錄」的紀錄。依原順序將每筆轉成name轉大寫的文字,並累加保留紀錄的原始 score。先組成 [轉換後清單,原始分數總和],空集合總和為0。直接回傳這份資料清單。
處理步驟
先解析 JSON;符合條件者保留轉換結果並累加原始 score;最後按指定格式回傳清單或精簡 JSON 文字。
為何正確
標準模組函式各自實作所指定的日期、文字或統計運算。篩選依原值、轉換依保留項目、摘要依規定集合進行,因此輸出的資料來源與型態一致。
邊界與注意事項
本題輸入範圍:最多12筆,name 為0~20字的ASCII文字,score 為 -100~100;所有指定鍵存在;保留重複紀錄。
範例追蹤
依參數順序 text 傳入 ["[{\"name\": \"Blue\", \"score\": -2, \"active\": false}, {\"name\": \"Ada\", \"score\": 3, \"active\": true}, {\"name\": \"Blue\", \"score\": 7, \"active\": true}]"]。關鍵中間資料為 converted = ['BLUE', 'ADA', 'BLUE'];total = 8;index = 2;row = {'name': 'Blue', 'score': 7, 'active': True}。最後回傳 [['BLUE', 'ADA', 'BLUE'], 8]。結果由 return 回傳,不使用 print。
複雜度
設輸入及必要輸出的總大小為 n;複製、轉換或掃描最壞時間 O(n),保存中間資料與回傳結果最壞需要 O(n) 空間。
CodeSprout 官方解答 · 題意分析、解題步驟與完整參考程式
import json
def solve(text):
converted = []
total = 0
for index, row in enumerate(json.loads(text)):
name, score, active = row['name'], row['score'], row['active']
if True:
converted.append(name.upper())
total += score
result = [converted, total]
return result
留言討論 0
登入 後就能留言,一起討論不同的寫法。