Try   HackMD

Collections 是 Pyhton 便利的資料結構類型擴充模型


Defaultdict

在存取字典(dict)時,經常會需要先判斷 key 是否存在,再進行後續存取操作,使用上很不便利

dd = {0: 1, 1: 2, 2: 3}
ls = [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

for k, v in enumerate(ls):
    if k not in dd:
        dd[k] = v
    else:
        dd[k] += v

而若是將原生字典改成 defaultdict 來存取,在遇到 key 不存在時,它會自動產生一組預設值

from collections import defaultdict


# 必須由函式指定預設值
# 且不能設定初始元素
dd = defaultdict(lambda _: 0)
ls = [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

# {0: 1, 1: 2, 2: 3}
for _ in range(3):
    dd[_] = _+1

for k, v in enumerate(ls):
    dd[k] += v

參考資料

collections雜談之一 ——— dict的key值存不存在乾我屁事