python中的collection模塊

collection模塊引用:from collections import *

1. Counter類(最常用):計數器

counter相當於計數器,是對字典類型的補充,用於統計元素出現的次數,具備字典的所有功能+自己的功能。

  • 例子
from collections import *
string = "abcdedgaabbccdd"
out = Counter(string)
print(out)

輸出Counter({'d': 4, 'a': 3, 'b': 3, 'c': 3, 'e': 1, 'g': 1})

2. defaultdict類:默認字典

defaultdict使用工廠函數創建字典,使用的時候不用考慮缺失的key。在使用python原生的數據結構dict的時候,如果用d[key]這樣的方式訪問,當指定的key不存在時,是會拋出keyerror異常,但是,如果使用defaultdict,只要傳入一個默認的工廠方法,那麼請求一個不存在的key時,便會調用這個工廠方法使其結果來作爲這個key的默認值。

  • 例子
from collections import *
members = [
    ['male', 'John'],
    ['male', 'Jack'],
    ['female', 'Lily'],
    ['male', 'Pony'],
    ['female', 'Lucy']
    ]

d= defaultdict(list)
for sex,name in members:
	d[sex].append(name)

print(d)

輸出
defaultdict(<class 'list'>, {'male': ['John', 'Jack', 'Pony'], 'female': ['Lily', 'Lucy']})

3. OrderedDict類:有序字典

dict中key是無序的,在做迭代時,無法確認key的順序。ordereddict是對字典類型的補充,他記住了字典元素添加的順序。

  • 例子
from collections import *
d1 = OrderedDict([('a', 1), ('z', 2), ('c', 3)])
d2 = Counter([('a',1),('z',2),('c',3)])
print(d1)
print(d2)

輸出:

4. namedtuple類:可命名元組

tuple是一個不可變集合,namedtuple用來構建一個自定義的tuple對象,並且規定了tuple元素的個數,可通過屬性而不是索引來引用tuple的某個元素,我們可以通過namedtuple很方便的自定義一個數據類型,它具有tuple的不變屬性又可以根據屬性來引用。

  • 例子
Point = namedtuple('Point',['x','y'])
p = Point(2,1)
print(p)
print("x = ",p.x)
print("y = ",p.y)

輸出:
Point(x=2, y=1)
x = 2
y = 1

5. deque類:雙端隊列(用的很少)

雙端隊列(deque)是一種支持向兩端高效地插入數據、支持隨機訪問的容器。它最大的好處就是實現了從隊列頭部快速增加和取出對象: .popleft(), .appendleft() 。

參考博客

  • https://blog.csdn.net/quanlingtu1272/article/details/96969776?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
  • https://blog.csdn.net/bitcarmanlee/article/details/52735415?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章