1. 程式人生 > >Python模塊 2

Python模塊 2

value ror png 鍵值對 包括 end name 插入 很快

collections模塊

在內置數據類型(dict、list、set、tuple)的基礎上,collections模塊還提供了幾個額外的數據類型:

1.namedtuple: 生成可以使用名字來訪問元素內容的tuple

2.deque: 雙端隊列,可以快速的從另外一側追加和推出對象

3.Counter: 計數器,主要用來計數

4.OrderedDict: 有序字典

5.defaultdict: 帶有默認值的字典

namedtuple

我們知道tuple可以表示不變集合,例如,一個點的二維坐標就可以表示成:

p=(1,2)

但是,看到(1, 2),很難看出這個tuple是用來表示一個坐標的。

這時,namedtuple就派上了用場:

技術分享圖片

類似的,如果要用坐標和半徑表示一個圓,也可以用namedtuple定義:

技術分享圖片

deque

使用list存儲數據時,按索引訪問元素很快,但是插入和刪除元素就很慢了,因為list是線性存儲,數據量大的時候,插入和刪除效率很低。

deque是為了高效實現插入和刪除操作的雙向列表,適合用於隊列和棧:

技術分享圖片

deque除了實現list的append()和pop()外,還支持appendleft()和popleft(),這樣就可以非常高效地往頭部添加或刪除元素。

OrderedDict

使用dict時,Key是無序的。在對dict做叠代時,我們無法確定Key的順序。

如果要保持Key的順序,可以用OrderedDict:

技術分享圖片

註意,OrderedDict的Key會按照插入的順序排列,不是Key本身排序:

defaultdict

有如下值集合 [11,22,33,44,55,66,77,88,99,90...],將所有大於 66 的值保存至字典的第一個key中,將小於 66 的值保存至第二個key的值中。

即: {‘k1‘: 大於66 , ‘k2‘: 小於66}

技術分享圖片

使用dict時,如果引用的Key不存在,就會拋出KeyError。如果希望key不存在時,返回一個默認值,就可以用defaultdict:

技術分享圖片

Counter

Counter類的目的是用來跟蹤值出現的次數。它是一個無序的容器類型,以字典的鍵值對形式存儲,其中元素作為key,其計數作為value。計數值可以是任意的Interger(包括0和負數)。Counter類和其他語言的bags或multisets很相似。

技術分享圖片

Python模塊 2