上一篇文章: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篇:讓字典保持有序