collections是Python內(nèi)建的一個(gè)集合模塊帚屉,提供了許多有用的集合類族扰,可以根據(jù)需要來選用匿情。下面是幾個(gè)常用的集合類:
deque:我們使用list存儲(chǔ)數(shù)據(jù)時(shí)扭倾,按索引訪問元素很快,但是插入和刪除元素就很慢了漾唉,因?yàn)閘ist是線性存儲(chǔ)荧库,數(shù)據(jù)量大的時(shí)候,插入和刪除效率很低赵刑。deque就是為了高效實(shí)現(xiàn)插入和刪除操作的雙向列表分衫,適合用于隊(duì)列和棧。例如:
from collections import deque
list1 = deque(['2', '3', '1', '7', '4'])
list1.append('11')#list末尾添加
list1.appendleft('0')#list頭部添加
print(list1)
list1.pop()# list末尾移除
list1.popleft() #list頭部移除
print(list1)#轉(zhuǎn)變?yōu)閘ist
print(list(list1))
defaultdict 使用字典當(dāng)key不存在的時(shí)候般此,就會(huì)報(bào)錯(cuò)誤(KeyError)蚪战,如果想要key不存在時(shí),返回一個(gè)默認(rèn)值铐懊,就可以用defaultdict邀桑,除了在Key不存在時(shí)返回默認(rèn)值,defaultdict的其他行為跟dict是完全一樣的科乎。例如:
from collections import defaultdict
dic = defaultdict(lambda: 'NONE')
dic['name'] = 'dd'
print(dic['name'])#dd
print(dic['age'])#NONE
OrderedDict概漱,使用dict時(shí),Key是無序的喜喂,OrderedDict 按照插入的順序排序,例如:
od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
namedtuple,是一個(gè)函數(shù)竿裂,可以創(chuàng)建一個(gè)自定義的tuple對象玉吁,并且制定tuple元素的個(gè)數(shù),并可以用屬性來引用tuple的定義的元素腻异,例如:
from collections import namedtuple
P = namedtuple('Point', ['x', 'y'])#P 是tuple的一個(gè)子類
p = P(2, 5)
print('p.x = {} p.y = {}'.format(p.x, p.y))
Counter是一個(gè)簡單的計(jì)數(shù)器,例如,統(tǒng)計(jì)字符出現(xiàn)的個(gè)數(shù)穗酥,例如:
from collections import Counter
c = Counter()
for ch in 'abcdabactyhclad1343119':
c[ch] = c[ch] + 1
print(c)
collections 還有UserDict,UserList,UserString等很有用的模塊。
持續(xù)更新~