1.6 在字典中將鍵映射到多個值上

字典是一種關聯容器,每個鍵都映射到一個單獨的值上,如果想讓鍵映射到多個值,需要將這多個值保存到另一個容器如列表或者集合中。要使用列表或者集合取決於應用的意圖,如果希望保留應用的插入順序就用列表,如果希望不重複就用集合。
爲了能方便的創建這樣的字典,可以使用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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章