字典是一種關聯容器,每個鍵都映射到一個單獨的值上,如果想讓鍵映射到多個值,需要将這多個值儲存到另一個容器如清單或者集合中。要使用清單或者集合取決于應用的意圖,如果希望保留應用的插入順序就用清單,如果希望不重複就用集合。
為了能友善的建立這樣的字典,可以使用collections子產品中的defaultdict類,可以構造的時候就把内部結構和資料類型弄好,友善使用
from collections import defaultdict
d = defaultdict(list)
print(d)
d['a'].append(1)
d['a'].append(2)
d['b'].append(4)
print(d)
d = defaultdict(set)
d['a'].add(1)
d['a'].add(2)
d['b'].add(3)
print(d)
也可以用字典自帶的setdefault,就是比較麻煩
d = dict()
print(d)
d.setdefault('a',[]).append(1)
print(d)
這種騷操作主要用于簡化對字典内第一個值初始化的情況
老的麻煩寫法:
d = dict()
for key, value in pairs:
if key not in d:
d[key]=[]
d[key].append(value)
新的簡化寫法
from collections import defaultdict
d = defaultdict(list)
for key, value in pairs:
d[key].append(value)