1. 程式人生 > >python collections模組講解

python collections模組講解

collection模組是python內建的一個模組

namedtuple
tuple表示不變的集合,即一個點可以由二維座標可以表示:
from collections import namedtuple
point=namedtuple('name',['X','Y'])
p=point(1,2)
print(p.X)
namedtuple是一個函式,它用來建立一個自定義的tuple物件,並且規定了tuple元素的個數,並可以用屬性而不是索引來引用tuple的某個元素。

deque
使用list儲存資料時,按索引訪問元素很快,但是插入和刪除元素就很慢了,因為list是線性儲存,資料量大的時候,插入和刪除效率很低。deque是為了高效實現插入和刪除操作的雙向列表,適合用於佇列和棧:
deque

除了實現list的append()pop()外,還支援appendleft()popleft(),這樣就可以非常高效地往頭部新增或刪除元素
from collections import deque
q=deque(['a','b','c'])
q.append('x')
q.appendleft('y')
print(q)

defaultdict
使用dict時,如果引用的Key不存在,就會丟擲KeyError。如果希望key不存在時,返回一個預設值,就可以用defaultdict
from collections import defaultdict
dd=defaultdict(lambda :'N/A')
dd['key1']='aa'
print(dd['key1'])#aa
print(dd['key2'])#N/A

OrderedDict

使用dict時,Key是無序的。在對dict做迭代時,我們無法確定Key的順序.
如果要保持Key的順序,可以用OrderedDict
注意,OrderedDict的Key會按照插入的順序排列,不是Key本身排序:
OrderedDict可以實現一個FIFO(先進先出)的dict,當容量超出限制時,先刪除最早新增的Key

Counter
Counter是一個簡單的計數器,例如,統計字元出現的個數:
from collections import Counter
s = '''A Counter is a dict subclass for counting hashable objects. It is an unordered collection where elements are stored as dictionary keys and their counts are stored as dictionary values. Counts are allowed to be any integer value including zero or negative counts. The Counter class is similar to bags or multisets in other languages.'''.lower()
css=Counter(s)

 

c = Counter()
for ch in 'programming':
    c[ch] = c[ch] + 1
print(c)