Collections 是 Pyhton 便利的資料結構類型擴充模型
---
### Defaultdict
在存取字典(dict)時,經常會需要先判斷 key 是否存在,再進行後續存取操作,使用上很不便利
```python
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 不存在時,它會自動產生一組預設值
```python
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值存不存在乾我屁事](https://ithelp.ithome.com.tw/articles/10193094)