python collections模組講解
阿新 • • 發佈:2018-12-05
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
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,當容量超出限制時,先刪除最早新增的KeyCounter
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)