標準庫之collections

2022-08-18 02:42:13 字數 2868 閱讀 3930

collections 模組----python標準庫,是資料結構常用模組

常用型別有:

計數器(counter)   dict的子類,計算可hash的物件;

雙端佇列(deque)  類似於list的容器,可以快速的在佇列頭部和尾部新增、刪除元素;

預設字典(defaultdict)  dict的子類,可以呼叫提供預設值的函式;

有序字典(ordereddict)  dict的子類,可以記住元素的新增順序;

可命名元組(namedtuple)  可以建立包含名稱的tuple;

1

#獲取元素個數,返回字典

23 >>> from collections import

counter

4 >>> str='

12312312312

'5 >>>counter(str)

6 counter()

7 >>>dict(counter(str))

8 9 >>> l = [1,2,3,4,5]

10 >>>counter(l)

11 counter()

12 >>> d=

13 >>>counter(d)

14 counter()

most_common(),返回乙個列表,包含counter中n個最大數目的元素,如果忽略n或者為none,most_common()將會返回counter中的所有元素,元素有著相同數目的將會以任意順序排列;

>>> counter('

what do you think you are good

').most_common(3)[('

', 6), ('

o', 5), ('

h', 2)]

subtract(),從乙個可迭代物件中或者另乙個對映(或counter)中,元素相減,類似於dict.update(),但是subtracts 數目而不是替換它們,輸入和輸出都有可能為0或者為負;

而update() 為相加

>>> c=counter()

>>> d=counter()

>>>c.substract(d)

>>>c

counter()

namedtuple是乙個函式,它用來建立乙個自定義的tuple物件,並且規定了tuple元素的個數,並可以用屬性而不是索引來引用tuple的某個元素。

這樣一來,我們用namedtuple可以很方便地定義一種資料型別,它具備tuple的不變性,又可以根據屬性來引用,使用十分方便。

#命名元組

#from collections import namedtuple##

p = namedtuple('point', ['x', 'y'])

#p1 = p(4,3)

#p2 = p(3,4)

#print(p1.x)

#print(p2.y)

#print(p(4,3))

#雙端佇列

deque是棧和佇列的一種廣義實現,deque是"double-end queue"的簡稱;deque支援執行緒安全、有效記憶體地以近似o(1)的效能在deque的兩端插入和刪除元素,儘管list也支援相似的操作,但是它主要在固定長度操作上的優化,從而在pop(0)和insert(0,v)(會改變資料的位置和大小)上有o(n)的時間複雜度。

大部分列表的方法在這裡也適用

#

from collections import deque

#l = [1,2]

#dq = deque(l)##

#dq.insert(4,5)

#print(dq.pop()) # 移除和返回deque中最右側的元素

#print(dq.popleft()) # 移除和返回deque中最左側的元素,

#print(dq)

# dq.clear() # 清零,元素長度為0

# dq.count(2) # 返回元素的個數

## 有序的字典

#from collections import ordereddict##

od = ordereddict([('a', 1), ('b', 2), ('c', 3)])

#print(od)

#print(od['b'])

#for i in od.items():

#print(i)

defaultdict
使用dict時,如果引用的key不存在,就會丟擲keyerror。如果希望key不存在時,返回乙個預設值,就可以用defaultdict
注意預設值是呼叫函式返回的,而函式在建立defaultdict物件時傳入。

除了在key不存在時返回預設值,defaultdict的其他行為跟dict是完全一樣的。

#預設字典

#from collections import defaultdict

#d = defaultdict(lambda : 0)

#print(d['a']) # 沒有a這個鍵,返回0

Python內建庫collections使用集錦

collections中有以下類 class name description namedtuple 用於建立具有命名字段的元組子類的工廠函式 deque 類似列表的容器,兩端都有快速追加和彈出 chainmap 類似於dict的類,用於建立多個對映的單個檢視 counter 用於計算可雜湊物件的d...

python之Collections容器資料型別

1 ordereddict字典的子類 常規dict並不跟蹤插入順序,迭代處理時會根據鍵在雜湊表中儲存的順序來生成值。import collections a a d 1 a c 3 a b 4 a for k,v in a.items print k,v c 3b 4 d 1 在ordereddic...

python模組之collections模組

collections模組 提供了一些額外的資料型別,供我們使用。namedtuple 命名元組 from collections import namedtuple 命名元組 namedtuple typename,field names typename元組的名稱 field names元組中元...