defaultdict省去了初始化容器的過程,會默認value對象爲指定類型的容器html
指定list時能夠使用.append,python
from collections import defaultdict d = defaultdict(list) d['a'].append(1) d
defaultdict(list, {'a': [1]}) json
指定set時能夠使用.add,app
d = defaultdict(set) d['a'].add(1) d['a'].add(1) d
defaultdict(set, {'a': {1}})編碼
原字典能夠使用.setdefault方法指定value爲容器,可是不太推薦,以下,htm
d = {} d.setdefault('a', []).append(1) d.setdefault('a', []).append(2) d.setdefault('b', []).append(3) d.setdefault('c', {1,2,3}) #默認的dict對象沒有add方法,非使用append也不行 # 因爲默認的方法中每次添加新的元素都要建立新的空對象[],因此不推薦 d
{'a': [1, 2], 'b': [3], 'c': {1, 2, 3}} 對象
順便,字典的內容是key值,blog
'a' in d # 字典in的是key
True 內存
OrderedDict內部維護着一個雙向鏈表用於記錄鍵值插入的順序,更新鍵值不會影響原有順序,插入鍵值會插入在末尾,因此其內存消耗爲普通字典的兩倍,it
from collections import OrderedDict d = OrderedDict() d['a'] = 1 d['c'] = 3 d['b'] = 2 print(d, d.items())
OrderedDict([('a', 1), ('c', 3), ('b', 2)])
odict_items([('a', 1), ('c', 3), ('b', 2)])
含序字典實際上常和json連用,用於輸出信息,
import json # 對字典進行編碼,使用OrderdDict能夠控制字段順序 json.dumps(d)
'{"a": 1, "c": 3, "b": 2}'