容器(collcetions)

Python附帶?個模塊, 它包含許多容器數(shù)據(jù)類型, 名字叫作collections。

1、defaultdict

與dict類型不同, 你不需要檢查key是否存在, 所以我們能這樣做:

from collections import defaultdict

colours = (

????('Yasoob', 'Yellow'),

????('Ali', 'Blue'),

????('Arham', 'Green'),

????('Ali', 'Black'),

????('Yasoob', 'Red'),

????('Ahmed', 'Silver'),

)?

favourite_colours = defaultdict(list)

for name, colour in colours:

????favourite_colours[name].append(colour)

print(favourite_colours)

另?種重要的是例?就是: 當你在?個字典中對?個鍵進?嵌套賦值時, 如果這個鍵不存在, 會觸發(fā)keyError異常。 defaultdict允許我們??個聰明的?式繞過這個問題。

問題:

some_dict = {}

some_dict['colours']['favourite'] = "yellow"

## 異常輸出: KeyError: 'colours'

解決?案:

from collections import defaultdict

tree = lambda: defaultdict(tree)

some_dict = tree()

some_dict['colours']['favourite'] = "yellow"

2、Counter

Counter是?個計數(shù)器, 它可以幫助我們針對某項數(shù)據(jù)進?計數(shù)。 ?如它可以?來計算每個?喜歡多少種顏?:

from collections import Counter

colours = (

????('Yasoob', 'Yellow'),

????('Ali', 'Blue'),

????('Arham', 'Green'),

????('Ali', 'Black'),

????('Yasoob', 'Red'),

????('Ahmed', 'Silver'),

)?

favs = Counter(name for name, colour in colours)

print(favs)

3、deque

deque提供了?個雙端隊列, 你可以從頭/尾兩端添加或刪除元素。

它的?法就像python的list, 并且提供了類似的?法, 例如:

from collections import deque

d = deque(range(5))

print(len(d),d[0],d[-1])

d.append(6)? #插入

d.pop()? #刪除

d.popleft()? #從左側(cè)刪除

d.extend([6,7,8])? #拓展隊列

d.extendleft([0])? #從左側(cè)拓展

我們也可以限制這個列表的??, 當超出你設定的限制時, 數(shù)據(jù)會從對隊列另?端被擠出去(pop)。

最好的解釋是給出?個例?:

d = deque(maxlen=30)

現(xiàn)在當你插?30條數(shù)據(jù)時,再次插入,最左邊?端的數(shù)據(jù)將從隊列中刪除。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容