天天看點

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)
           

繼續閱讀