1. 程式人生 > >python之collection模塊

python之collection模塊

排序。 存在 counter 類型 ons 容器類 print 默認值 列表

collections 是python內建的一個集合模塊。

namedtuple可以很方便的定義一種數據類型,他具備tuple的不可變性,也可以根據屬性來引用,非常方便。

from collections import  namedtuple
point = namedtuple(‘p‘,[‘x‘,‘y‘])
p = point(1,2)
print(p.x) #1
print(p.y) #2
# namedtuple(‘名稱‘, [屬性list]):
Circle = namedtuple(‘Circle‘, [‘x‘, ‘y‘, ‘r‘])

deque可以高效的實現插入和刪除的雙向列表,適用於隊列和棧。

from collections import deque
q= deque([‘a‘,‘b‘,‘c‘])
q.append(‘x‘) 
q.appendleft(‘y‘)
print(q) 

#deque([‘y‘, ‘a‘, ‘b‘, ‘c‘, ‘x‘])

defaultdict

使用dict時,如果key不存在,則拋出KeyError,如果希望key不存在時,返回一個默認值,可以用defaultdict。

from collections import defaultdict
dic = defaultdict(lambda :‘N/A‘)
dic[‘k1‘] = ‘abc‘
print(dic[‘k1‘]) #‘abc’
print(dic[‘k2‘]) #N/A

OrderedDict

使用dict時,key是無序的,如果要保證key的順序,可以用OrderedDict。OrderedDict的key是按照插入的順序排列,不是key本身排序。

from collections import OrderedDict
dic = dict([(‘a‘,1),(‘b‘,2),(‘c‘,3)])
dic1 = OrderedDict([(‘a‘,1),(‘b‘,2),(‘c‘,3)])
print(dic.keys()) #dict_keys([‘a‘, ‘b‘, ‘c‘])
print(dic1.keys()) #odict_keys([‘a‘, ‘b‘, ‘c‘])

Counter是一個簡單的計數器,目的是用來跟蹤值出現的次數。它是一個無序的容器類型,以字典的鍵值對形式存儲。其中元素為key,個數為value. 計數值可以是任意的interger(含0和負數)

from collections import Counter
c = Counter(‘abcdeabcdabcaba‘)
print(c)
輸出:Counter({‘a‘: 5, ‘b‘: 4, ‘c‘: 3, ‘d‘: 2, ‘e‘: 1})

  

python之collection模塊