collections模塊在內置的數據類型,比如:int、str、list、dict等基礎之上額外提供了幾種數據類型。
1.namedtuple(): 生成可以使用名字來訪問元素內容的tuple子類
2.deque: 雙端隊列,可以快速的從另外一側追加和推出對象
3.Counter: 計數器,主要用來計數
4.OrderedDict: 有序字典
5.defaultdict: 帶有默認值的字典
一:namedtuple(),可命名元組。
tuple是一個不可變的集合,namedtuple是一個函數,她用來構建一個自定義的tuple對象,並且規定了tuple元素的個數,可通過屬性而不是索引來引用tuple的某個元素。我們可以通過namedtuple很方便的自定義一個數據類型,它具有tuple 的不變屬性又可以根據屬性來引用。
from collections import namedtuple
piont=namedtuple('piont',['x','y'])
p=piont(2,1)
print(p)
print("x =",p.x)
print("Y =",p.y)
>>>isinstance(p,piont)
True
>>>isinstance(p,tuple)
True
類似的創建一個圓,通過坐標,半徑r。用namedtuple構建
Cirle=namedtup(‘Circle’,['x','y','r'])
2、有序字典(orderedDict )
dict中key是無序的,在做迭代時,無法確認key的順序。
orderdDict是對字典類型的補充,他記住了字典元素添加的順序
from collections import OrderedDict
od=OrderedDict([('a',1),('z',2),('c',3)])// 有序字典順序是插入進去的順序排列的
print(od)
d=dict([('a',1),('z',2),('c',3)]) //字典是無序的,key的順序是變化的
print(d)
3、默認字典(defaultdict)
defaultdict是對字典的類型的補充,他默認給字典的值設置了一個類型。
我們都知道,在使用Python原生的數據結構dict的時候,如果用 d[key] 這樣的方式訪問, 當指定的key不存在時,是會拋出KeyError異常的。但是,如果使用defaultdict,只要你傳入一個默認的工廠方法,那么請求一個不存在的key時, 便會調用這個工廠方法使用其結果來作為這個key的默認值。
4、計數器Counter
Counter是對字典類型的補充,用於追蹤值的出現次數。
具備字典的所有功能+自己的功能
from collections import Counter
c=Counter(['11','22','11','33','11','44','55'])
c2=Counter("abcdefdasfdsafaf")
print(c)
print(c2)
most_common(self, n=None),數量從大到小排列,獲取前N個元素。
elements(self) 計數器中的所有元素。注:此處非所有元素集合,而是包含所有元素集合的迭代器sorted(c.elements())
update(self,iterable=None,**keds):更新計數器,其實是增加計數器,如果沒有則新建。
c.update('witch')
subtract(self, iterable=None, **kwds):相減,原來的計數器中的每一個元素的數量減去后添加的元素的數量c.subtract('witch')