這個主題考什麼
- 用 get 安全讀取可能不存在的鍵,而不是讓程式崩潰。
- 更新、合併並走訪鍵、值或鍵值對。
- 識別哪些物件可以作為字典鍵。
常見錯誤
- 鍵可能不存在時仍使用 d[key]。先判斷應該用 get 還是預設值。
- 在走訪字典時改變它的大小。應走訪鍵或鍵值對的副本。
- 用列表作為鍵。字典鍵必須可雜湊。
範例題
從完整題庫中挑出的 10 道代表題。先自己作答,再展開答案。
-
1. 小明從奶茶選單查價格:menu.get("果茶", "暫無")。如果「果茶」不在選單裡,回傳?
顯示答案
答案
B. "暫無"(鍵不存在時)解析: get(key, default) 在鍵存在時回傳對應的值,不存在時回傳預設值,且不會插入新鍵。所以選單裡沒有水果茶就回傳 'not available'。
-
2. 鍵缺失且沒給預設值時,d.pop('a') 會怎樣?
顯示答案
答案
A. KeyError解析: pop 刪除鍵並回傳對應的值,但鍵缺失且沒給預設值時會拋 KeyError;傳第二個參數則改為回傳它,兩者差別很大。
-
3. 🧋 小明判斷「珍珠奶茶」是否在選單字典裡,'key' in {'key':1} 的結果?
顯示答案
答案
A. True解析: in 檢查的是鍵,'key' 正是這個字典的鍵,表達式為 True;值 1 在這裡不起作用,別用值來判斷成員關係。
-
4. Python 3.7+ 的普通字典按什麼順序儲存鍵?
顯示答案
答案
A. 插入順序解析: 從 Python 3.7 起,語言保證字典保持插入順序,走訪就按加鍵的先後進行。要字母序得另外用 sorted()。
-
5. 小明判斷「珍珠奶茶」是否在選單字典 d 中:"珍珠奶茶" ___ d
顯示答案
答案
in解析: in 運算子檢查的是鍵,只有 'bubble tea' 作為鍵存在時才為 True;它不看值,也不做任何型別轉換。
-
6. 🧋 小明從奶茶字典查價格,查不到回傳預設值,安全獲取字典值:d.___('key', '預設值')
顯示答案
答案
get解析: get 先接鍵、再接兜底值,d.get('key', 'default') 不會拋例外。不傳兜底值時回傳 None。
-
7. 給選單做一份獨立副本。空裡填哪個方法?
backup = menu.____()顯示答案
答案
copy解析: copy() 回傳淺拷貝,給 backup 加鍵不會影響 menu;但巢狀的值仍然共用,深結構要用 deepcopy。
-
8. get 和 setdefault 的區別在哪?輸出什麼?
d = {"a": 1} print(d.get("b", 0), d.setdefault("c", 2), d)顯示答案
答案
0 2 {'a': 1, 'c': 2}解析: get('b', 0) 回傳 0 但不添加 b;setdefault('c', 2) 回傳 2 並把 c 插進去。於是依次列印 0、2 和 {'a': 1, 'c': 2}。
-
9. setdefault 設定不存在的 b 鍵,回傳值是什麼?
d = {"a": 1} print(d.setdefault("b", 2), d)顯示答案
答案
2 {'a': 1, 'b': 2}解析: setdefault 在鍵存在時回傳原值,不存在時插入預設值並回傳它。這裡 b 缺失,於是回傳 2,d 裡也多出 b。
-
10. `score('quirky')` 回傳什麼?
POINTS = { 'a': 1, 'b': 3, 'c': 3, 'd': 2, 'e': 1, 'f': 4, 'g': 2, 'h': 4, 'i': 1, 'j': 8, 'k': 5, 'l': 1, 'm': 3, 'n': 1, 'o': 1, 'p': 3, 'q': 10, 'r': 1, 's': 1, 't': 1, 'u': 1, 'v': 4, 'w': 4, 'x': 8, 'y': 4, 'z': 10 } def score(word): if not word.isalpha(): return 0 return sum(POINTS[letter] for letter in word.lower()) print(score('quirky'))顯示答案
答案
22解析: q 10、u 1、i 1、r 1、k 5、y 4,相加得 22,所以 score('quirky') 回傳 22。沒有任何去重,重複字母會再算一次。
常見問題
get 和方括號讀取有什麼區別?
d[key] 在鍵不存在時拋出 KeyError;d.get(key) 回傳 None,d.get(key, default) 回傳你給的預設值。
字典會保留插入順序嗎?
目前 Python 版本把插入順序作為語言行為保留,但除非順序是需求的一部分,不要依賴它。
繼續保持練習節奏。
完整題庫會在這個瀏覽器裡記住進度,支援依主題篩選,並包含每日一題和錯題重練。