Python實用技法第5篇:一鍵多值字典:defaultdict

Mark發表於2019-02-16

上一篇文章:Python實用技法第4篇:實現優先順序佇列
上一篇文章:Python實用技法第6篇:讓字典保持有序

1、需求?

我們想要一個能將鍵(key)對映到多個值的字(即所謂的一鍵多值字典)

2、解決方案?

字典是一種關聯容器,每個鍵都對映到一個單獨的值上。如果想讓鍵對映到多個值,需要將這些多個值儲存到另一個容器(列表或者集合)中。

可以這樣建立字典:

d={
‘a’:[1,2,3],
`b`:[4,5]
}

或者這樣建立:

d={
`a`:{1,2,3},
`b`:{4,5}
}

要使用列表還是集合完全取決應用的意圖。如果希望保留元素插入的順序,就用列表,如果希望消除重複元素(並且不在意他們的排序),就用集合。

為了能方便的建立這樣的字典,可以利用collections模組中的defaultdict類。defaultdict的一個特點就是它會自動初始化第一個值,這樣只需關注新增元素即可:

from collections import defaultdict

d=defaultdict(list)
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(4)

print(d)

結果:

defaultdict(<class `list`>, {`a`: [1, 2], `b`: [4]})
defaultdict(<class `set`>, {`a`: {1, 2}, `b`: {4}})

上一篇文章:Python實用技法第4篇:實現優先順序佇列
上一篇文章:Python實用技法第6篇:讓字典保持有序

相關文章