所有入門單元免費開放 · 課程內容持續更新中

串列與字典:整理一堆資料

一個變數只能裝一個值,但記帳有一整個月的資料。用串列裝「一排東西」,用字典裝「有欄位的資料」,再把兩者組合起來。

第 1.6 堂約 15 分鐘

一個盒子不夠用了

到目前為止,每個變數都只裝一個值:lunch = 85。可是一個月有幾十筆花費,總不能取 cost1、cost2……一路到 cost60 吧?

這堂課要學兩種「可以裝很多東西」的容器:串列和字典。學會它們,下一堂就能動手做記帳小工具了。

串列:一排有順序的東西

串列(list)用中括號,把資料用逗號隔開:

costs = [85, 45, 120, 60]
print(costs)
print(len(costs))
print(sum(costs))
[85, 45, 120, 60]
4
310

len() 算有幾個,sum() 算總和。光這兩個,就省掉你上一堂寫的累加迴圈了。

用位置拿資料

串列裡每個東西都有位置編號,叫做索引。重點是:從 0 開始數。

print(costs[0])
print(costs[2])
print(costs[-1])
85
120
60

costs[-1] 是「倒數第一個」,想拿最後一筆時很方便。

串列示意圖:四個相連的格子分別裝著 85、45、120、60,上方標示索引 0、1、2、3,下方標示倒數索引 -4 到 -1

從 0 開始數,是新手最常搞混的地方,多看幾次就習慣了。

新增資料與逐一處理

costs.append(35)

for c in costs:
    if c >= 100:
        print(f"大筆花費:{c} 元")
大筆花費:120 元

.append() 把新資料加到最後面。for c in costs 會依序把每個值放進 c,一筆一筆處理。

字典:用名字找資料

一筆花費其實不只有金額,還有日期、類別、說明。如果用串列寫成 ["11/03", "餐費", 85],過一陣子你就會忘記第幾個是什麼。

字典(dict)用大括號,每一項是 鍵: 值 的組合:

record = {"date": "2026-11-03", "category": "餐費", "item": "雞腿便當", "amount": 85}

print(record["item"])
print(record["amount"])
雞腿便當
85

用 record["amount"] 而不是 record[3],程式本身就說明了它在做什麼。要修改或新增欄位也很簡單:

record["amount"] = 90
record["note"] = "加滷蛋"

組合起來:一張表格

把很多筆字典放進一個串列,就得到了一張「表格」:

records = [
    {"category": "餐費", "item": "雞腿便當", "amount": 85},
    {"category": "交通", "item": "捷運", "amount": 30},
    {"category": "餐費", "item": "珍奶", "amount": 60},
]

total = 0
for r in records:
    total += r["amount"]

print(f"共 {len(records)} 筆,總計 {total} 元")
共 3 筆,總計 175 元

示意圖:一個串列裡有三個字典,對照成一張表格,每個字典是一列,category、item、amount 三個鍵是三個欄位

這個結構非常重要。之後你會遇到的 CSV 檔、Excel 表、網路 API 回傳的資料,幾乎都可以想成「字典組成的串列」。

依類別加總

用一個字典當「各類別的小計」,是很常見的技巧:

by_category = {}
for r in records:
    cat = r["category"]
    by_category[cat] = by_category.get(cat, 0) + r["amount"]

print(by_category)
{'餐費': 145, '交通': 30}

by_category.get(cat, 0) 的意思是「拿這個類別目前的小計,如果還沒有,就當作 0」。這一行剛開始可能看不太懂,沒關係,這正是很適合問 AI 的地方。

可以這樣問 Claude

我在學 Python 的字典。請一步一步解釋下面這段程式,用表格列出迴圈每一圈之後 by_category 的內容,並告訴我如果把 .get(cat, 0) 改成 by_category[cat],會發生什麼錯誤、為什麼。

(貼上上面「依類別加總」的程式)

行動練習

建立 week.py:

  1. 建一個串列 records,放進至少 5 筆你這週真實的花費,每筆是一個字典,包含 category、item、amount。
  2. 印出總筆數和總金額。
  3. 印出金額最大的那一筆的品項名稱。(提示:用迴圈比較,或問 AI 有沒有更簡單的寫法,再確認你看得懂它的答案。)
  4. 依類別加總,印出每個類別花了多少。

讀完了嗎?

標記完成後,單元與專案的進度會自動更新(只存在這台裝置的瀏覽器)。

卡住了?讓 AI 當你的家教複製這段提問範本,貼到 Claude 或其他 AI 工具,再補上你卡住的地方。

留言與討論

卡關了、有心得,或發現內容需要更新?都歡迎留言。留言使用 GitHub 帳號登入。

留言區即將開放。現在可以先到 GitHub 討論區 發問,或看看 交流頁 的其他管道。