collections
模組給出了python中一些功能更加強大的資料結構、集合類
顧名思義,namedtuple
就是有了名字的tuple
,宣告乙個namedtuple
類的時候可以傳入兩個引數,第乙個是這個tuple
的名字,第二個是乙個str
的list
,依次說明其中每乙個元素的名稱:
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
是沒有順序,即我們遍歷乙個字典的時候是不知道它所遍歷的順序的,單獨ordereddict
為key
進行了排序,順序就是拆入鍵的順序,後插入的排在後邊,這樣在遍歷的時候就有了順序:
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可以很...