-
1 普通字典
首先,看看python裡面的基礎字典使用,下面代碼會出錯,因為字典裡沒有key值"k2"存在。
d = {"k1": 123}
print(d["k2"])
-
2 普通字典的get()
python裡字典的get()方法擷取key的value,如果沒有key,傳回預設項,預設項可以是任意對象。
但是,get方法不會改變字典本身。
下面的代碼示範了這一原則。
d = {"k1": 123}
print(d.get('k2', 45))
print(d.get('k2', []))
print(d)
ouput:
45
[]
{'k1': 123}
- 3 collections.defaultdict()
collections.defaultdict 在最初需要設定預設傳回的對象,當找不到key時候,自動建立一個鍵值對到原字典,原字典會改變。
from collections import defaultdict
d = defaultdict(int)
d['k1'] = 123
print("普通的", d)
print(d['k2'])
print("查找了一個不存在的key後的d", d)
output
普通的 defaultdict(<class 'int'>, {'k1': 123})
0
查找了一個不存在的key後的d defaultdict(<class 'int'>, {'k1': 123, 'k2': 0})
- 4 collections.defaultdict() 的應用場景
做一些資料統計的時候,比如直方圖,統計每個類别有多少數量,開始也不知道有多少類别。
下面代碼示範了這一場景,統計s字元串中各個字母的數量個數。
from collections import defaultdict
s = 'mississippi'
d = defaultdict(int)
for k in s:
d[k] += 1
print(d.items())
output
dict_items([('m', 1), ('i', 4), ('s', 4), ('p', 2)])