Python中的collections模組詳解

2021-10-11 18:43:07 字數 3417 閱讀 4701

collections模組給出了python中一些功能更加強大的資料結構、集合類

顧名思義,namedtuple就是有了名字的tuple,宣告乙個namedtuple類的時候可以傳入兩個引數,第乙個是這個tuple的名字,第二個是乙個strlist,依次說明其中每乙個元素的名稱:

from collections import namedtuple

point = namedtuple(

"point",[

'x',

'y']

)p = point(1,

2)print

("point at x={}, y={}"

.format

(p.x, p.y)

)

執行結果:

point at x=1, y=2
再比如,使用乙個namedtuple來儲存乙個馬爾可夫決策過程(markov decision process,mdp)模型:

mdp = namedtuple(

"mdp",[

'states'

,'actions'

,'transitions'

,'rewards'

])

deque是乙個雙向列表,非常適用於佇列和棧,因為普通的list是乙個線性結構,使用索引訪問元素時非常快,但是對於插入和刪除就比較慢,所以deque可以提高插入和刪除的效率,可以使用list(a_deque)deque轉換成list

常用的方法:

pop:從列表尾部取出元素

popleft:從列表頭部取出元素

乙個例子:

from collections import deque

a = deque([1

,2,3

])print

(a)4

)print

(a)0

)print

(a)a.pop(

)print

(a)a.popleft(

)print

(list

(a))

執行結果:

deque([1, 2, 3])

deque([1, 2, 3, 4])

deque([0, 1, 2, 3, 4])

deque([0, 1, 2, 3])

[1, 2, 3]

defaultdict是給不存在的key分配乙個預設值的字典,和普通的dict相比,如果遇到key不存在的情況,不會丟擲keyerror,而是返回預設值。其他的行為和dict一模一樣:

from collections import defaultdict

dd = defaultdict(

lambda

:'default value'

)dd[

'key1']=

123print

(dd[

'key1'])

print

(dd[

'key2'

])

執行結果為:

123

default value

正如其名字所說,ordereddict是乙個有序的字典,普通的dict中的key是沒有順序,即我們遍歷乙個字典的時候是不知道它所遍歷的順序的,單獨ordereddictkey進行了排序,順序就是拆入鍵的順序,後插入的排在後邊,這樣在遍歷的時候就有了順序:

from collections import ordereddict

od = ordereddict([(

'a',1)

,('b',2)

,('c',3)

])od['d']=

4for item in od.items():

print

(item)

執行結果為:

('a', 1)

('b', 2)

('c', 3)

('d', 4)

chainmap是乙個將多個dict按照循序串起來的資料結構,在查詢字典中的某乙個鍵所對應的值的時候,先從chainmap中的第乙個字典查起,如果該字典有該key,就返回對應的值,沒有就依次往後查詢後邊的dict

from collections import chainmap

dict1 =

dict2 =

dict3 =

dicts = chainmap(dict1, dict2, dict3)

print

(dicts[

'a']

)print

(dicts[

'b']

)print

(dicts[

'c']

)

獲得的結果為:

1

2c

counter是乙個計數器,它是dict的乙個子類,可以根據鍵來區別記錄多個不同的計數,相當於乙個計數器集合,還可以通過update函式一次性更新多個計數器:

from collections import counter

counter = counter(

)for c in

"hello world"

: counter[c]+=1

print

(counter)

counter.update(

"hello world"

)print

(counter)

得到的結果:

counter()

counter()

ABAP中Collect的用法

簡單來說 collect在非數值字段相同的情況下,起到了數值字段彙總作用。語法 collect w table into i table 舉個簡單的栗子 如下 report ztest no standard page heading.types begin of ty test,id 3 type...

ABAP中COLLECT的用法

要填充內錶 既可逐行 新增資料,也可複製另 乙個 的 內容。要計算數 字字段之和 或要確保內 表中沒有出 現重複條目 請使用 collect 語句,它根 據標準關鍵 字處理行。要在內表 現有行之前 插入新行,請使用 insert 語句。要將內錶 行插入另一 個內錶中,請使用 insert 語句的變式...

Python常用內建模組之collections

collections是python內建的乙個集合模組,提供了許多有用的集合類。1.namedtuple namedtuple是乙個函式,它用來建立乙個自定義的tuple物件,並且規定了tuple元素的個數,並可以用屬性而不是索引來引用tuple的某個元素。這樣一來,我們用namedtuple可以很...