字典是一種關聯容器,每個鍵都映射到一個單獨的值上,如果想讓鍵映射到多個值,需要將這多個值保存到另一個容器如列表或者集合中。要使用列表或者集合取決於應用的意圖,如果希望保留應用的插入順序就用列表,如果希望不重複就用集合。
爲了能方便的創建這樣的字典,可以使用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)