Python 字典必學技巧:用 setdefault 優雅地處理預設值

加入好友
加入社群
Python 字典必學技巧:用 setdefault 優雅地處理預設值 - 儲蓄保險王

在撰寫 Python 程式時,我們經常會遇到一種情況:
「我們想把資料放進字典(Dictionary)裡,
但我們不確定這個 Key 到底存不存在。
如果不存在,我們需要先給它一個初始值。」

最常見的應用場景就是「分類資料」
讓我們用一個非常簡單的教學例子來看看!

📝 情境:學生社團分類
假設我們有一份學生的報名資料,我們想把它整理成一個字典,
「社團名稱」變成 Key,而「參加的學生名單 (List)」變成 Value

# 報名資料
records = [
    ("Alice", "吉他社"),
    ("Bob", "熱舞社"),
    ("Charlie", "吉他社"),
    ("David", "魔術社"),
    ("Eve", "熱舞社")
]

❌ 寫法一:常見的新手寫法 (加上 if 判斷)
如果不用任何特殊語法,我們通常會這樣寫:

club_members = {}

for name, club in records:
    # 1. 先檢查社團 (Key) 是否已經在字典裡
    if club not in club_members:
        # 2. 如果不在就先建立一個空的列表
        club_members[club] = []
        
    # 3. 把學生名字加進列表裡
    club_members[club].append(name)

print(club_members)
# 輸出: {'吉他社': ['Alice', 'Charlie'], '熱舞社': ['Bob', 'Eve'], '魔術社': ['David']}

這段程式碼完全正確,
但為了「如果 Key 不存在就建立空列表」這件事,
我們多寫了兩行 if 判斷,稍微有點囉嗦。

✨ 寫法二:老練的寫法 (使用 setdefault)
這時候就是 setdefault 登場的最佳時機了!
同樣的邏輯,我們可以縮減成一行:

club_members = {}

for name, club in records:
    # 核心魔法就在這一行
    club_members.setdefault(club, []).append(name)

print(club_members)
# 輸出一樣是: {'吉他社': ['Alice', 'Charlie'], '熱舞社': ['Bob', 'Eve'], '魔術社': ['David']}
Python 字典必學技巧:用 setdefault 優雅地處理預設值 - 儲蓄保險王

🔍 拆解 setdefault 的運作原理
dictionary.setdefault(key, default_value) 這個函式在執行時,
其實偷偷幫你做了以下三件事:

尋找:檢查字典裡有沒有 club 這個 Key。
沒有的話就賦值:如果沒有這個 Key,
它會自動幫你在字典裡新增 club: [] (這裡的 [] 就是我們傳进去的預設值)。
回傳結果給我們操作:不管是原本就存在的 List,還是剛剛才建立的空 List,
它都會把這個 List 拋出來給我們。
因此,我們可以直接在後面接上 .append(name),把資料塞進去。

推薦hahow線上學習python: https://igrape.net/30afN

加入好友
加入社群
Python 字典必學技巧:用 setdefault 優雅地處理預設值 - 儲蓄保險王

儲蓄保險王

儲蓄險是板主最喜愛的儲蓄工具,最喜愛的投資理財工具則是ETF,最喜愛的省錢工具則是信用卡

You may also like...

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *