CodeSprout程式萌芽
中等第 323 題 · 資料清理回報
CodeSprout 官方2026/10/04 00:19
官方解答 · 置頂Python

官方解答|資料清理回報

官方解答

Python #323:資料清理回報

解題規則

資料工具會換算符合條件的項目,並列出其餘項目的代號供核對。

檢查每個鍵值對是否符合「所有項目」。符合者保留原鍵,將值改成[原值,鍵長];不符合者只記錄鍵名。回傳 [轉換後字典,被排除的鍵清單];排除鍵按Python字串順序排序,原字典不可修改。

處理步驟

符合條件的鍵寫入 result,值按指定規則轉換;不符合者把原鍵加入 excluded。最後只排序 excluded,回傳 [result,excluded]。

為何正確

每個鍵值或紀錄都按指定規則處理;篩選、轉換、分組或讀值各自使用規定的來源。排序只作用於題目要求的輸出,原字典與組內紀錄順序保持不變。

邊界與注意事項

本題輸入範圍:最多10個鍵;鍵只含ASCII字元且長度0~20;值為 -100~100。需要排序時依Python字串排序。 除題目指定的篩選或移除外,保留原資料的重複項與順序;使用切片或明確判斷安全處理允許的空資料。

範例追蹤

依參數順序 data 傳入 [{"red":3,"blue":-2,"green":5}]。關鍵中間資料為 result = {'red': [3, 3], 'blue': [-2, 4], 'green': [5, 5]};excluded = [];key = 'green';value = 5。最後回傳 [{'red': [3, 3], 'blue': [-2, 4], 'green': [5, 5]}, []]。結果由 return 回傳,不使用 print。

複雜度

設項目數 n、最大鍵長 L;逐筆處理加上輸出排序最壞時間 O(nL log n),保存分組、歷史和結果最壞需要 O(nL) 空間。

CodeSprout 官方解答 · 題意分析、解題步驟與完整參考程式

def solve(data):
    result = {}
    excluded = []
    for key, value in data.items():
        if True:
            result[key] = [value, len(key)]
        else:
            excluded.append(key)
    return [result, sorted(excluded)]

留言討論 0