首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

Python 字典 setdefault() 方法完整教學與實用範例

     編輯:更多程式設計知識

方法簽名

dict.setdefault(key, default=None)

行為說明

  • 若 key 存在 → 回傳對應值,**不修改** 字典
  • 若 key 不存在 → 插入 key: default,回傳 default
  • 相當於:if key not in d: d[key] = default; return d[key]

基本範例


d = {'name': 'Alice', 'age': 25}

print(d.setdefault('age', 0))    # 25 (鍵存在,回傳既有值)
print(d.setdefault('city', 'Taipei'))  # Taipei (鍵不存在,插入並回傳)
print(d)  # {'name': 'Alice', 'age': 25, 'city': 'Taipei'}

經典用法:分組統計


words = ['apple', 'banana', 'apricot', 'blueberry', 'cherry']
groups = {}

for w in words:
    key = w[0]  # 首字母分組
    groups.setdefault(key, []).append(w)

print(groups)
# {'a': ['apple', 'apricot'], 'b': ['banana', 'blueberry'], 'c': ['cherry']}

進階:巢狀字典自動建立


# 多層 setdefault
data = {}
data.setdefault('2024', {}).setdefault('Q1', []).append(100)
data.setdefault('2024', {}).setdefault('Q1', []).append(200)
# data = {'2024': {'Q1': [100, 200]}}

# 更優雅:collections.defaultdict
from collections import defaultdict
dd = defaultdict(lambda: defaultdict(list))
dd['2024']['Q1'].append(100)

比較:get() vs setdefault() vs []

操作鍵存在鍵不存在修改字典
d[key]回傳值拋出 KeyError否
d.get(key, def)回傳值回傳 def否
d.setdefault(key, def)回傳值插入並回傳 def是

注意事項

  • default 參數會被**直接插入**,若為可變物件(列表、字典),所有缺鍵插入共用同一物件實例 → 使用 defaultdict 或 lambda 延遲建立
  • 執行緒不安全,多執行緒需自行加鎖
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved