python使用collections模塊的容器數(shù)據(jù)類(lèi)型高效處理數(shù)據(jù)
Python collections 模塊
在本節(jié)中,我們將詳細(xì)介紹 Python 中的 collections 模塊。作為 Python 標(biāo)準(zhǔn)庫(kù)的一部分,collections 提供了一些有用的容器數(shù)據(jù)類(lèi)型,它們可以幫助我們?cè)诰幊虝r(shí)更加高效地處理數(shù)據(jù)。我們將逐一介紹這些容器數(shù)據(jù)類(lèi)型,并通過(guò)實(shí)例代碼來(lái)加深理解。請(qǐng)注意,這里的內(nèi)容針對(duì) Python 3.x 版本。
collections 模塊主要包括以下幾種數(shù)據(jù)類(lèi)型:
- namedtuple
- deque
- Counter
- OrderedDict
- defaultdict
- ChainMap
接下來(lái),我們將分別介紹這些數(shù)據(jù)類(lèi)型的用途和用法。
1. namedtuple
namedtuple 是一個(gè)工廠函數(shù),它可以幫助我們創(chuàng)建一個(gè)簡(jiǎn)單的自定義類(lèi)。這個(gè)類(lèi)具有不可變性(即創(chuàng)建后不能修改),并且可以通過(guò)屬性名來(lái)訪問(wèn)元素。namedtuple 對(duì)于需要定義簡(jiǎn)單數(shù)據(jù)結(jié)構(gòu)的場(chǎng)景非常有用。
from collections import namedtuple
# 定義一個(gè)簡(jiǎn)單的坐標(biāo)類(lèi)
Coord = namedtuple("Coord", ["x", "y"])
coord1 = Coord(3, 4)
print(coord1.x) # 輸出:3
print(coord1.y) # 輸出:42. deque
deque 是一個(gè)雙端隊(duì)列(double-ended queue)數(shù)據(jù)結(jié)構(gòu),它允許我們?cè)陉?duì)列的兩端進(jìn)行插入和刪除。相比于 Python 的內(nèi)置 list,deque 在頭部插入和刪除元素時(shí)的性能更優(yōu)。
from collections import deque d = deque([1, 2, 3, 4, 5]) d.appendleft(0) # 在隊(duì)列頭部插入元素 d.append(6) # 在隊(duì)列尾部插入元素 print(d) # 輸出:deque([0, 1, 2, 3, 4, 5, 6]) d.popleft() # 刪除隊(duì)列頭部的元素 d.pop() # 刪除隊(duì)列尾部的元素 print(d) # 輸出:deque([1, 2, 3, 4, 5])
3. Counter
Counter 是一個(gè)字典(Dict)的子類(lèi),用于計(jì)數(shù)可哈希的對(duì)象。它可以方便地對(duì)數(shù)據(jù)進(jìn)行計(jì)數(shù)統(tǒng)計(jì)。
from collections import Counter
data = ['apple', 'banana', 'orange', 'apple', 'banana', 'apple']
counter = Counter(data)
print(counter) # 輸出:Counter({'apple': 3, 'banana': 2, 'orange': 1})4. OrderedDict
OrderedDict 是一個(gè)字典(Dict)的子類(lèi),它會(huì)維護(hù)鍵值對(duì)的插入順序。在 Python 3.7 之前,內(nèi)置的字典類(lèi)型不保證順序,但從 Python 3.7 開(kāi)始,內(nèi)置字典已經(jīng)變?yōu)橛行?,因?nbsp;OrderedDict 在某種程度上已經(jīng)不再是必需的。
from collections import OrderedDict
od = OrderedDict()
od["a"] = 1
od["b"] = 2
od["c"] = 3
for key, value in od.items():
print(key, value)
# 輸出:
# a 1
# b 2
# c 35. defaultdict
defaultdict 是一個(gè)字典(Dict)的子類(lèi),它提供了一個(gè)默認(rèn)值工廠方法,用于處理不存在的鍵。這在某些場(chǎng)景下可以簡(jiǎn)化代碼邏輯。
from collections import defaultdict
dd = defaultdict(int)
data = ['apple', 'banana', 'orange', 'apple', 'banana', 'apple']
for item in data:
dd[item] += 1
print(dd) # 輸出:defaultdict(<class 'int'>, {'apple': 3, 'banana': 2, 'orange': 1})6. ChainMap
ChainMap 是一個(gè)類(lèi),用于將多個(gè)映射(如字典)組合在一起。在查找時(shí),它會(huì)按照添加的順序從第一個(gè)映射開(kāi)始,直到找到相應(yīng)的鍵。這在合并多個(gè)配置或參數(shù)字典時(shí)非常有用。
from collections import ChainMap
dict1 = {"a": 1, "b": 2}
dict2 = {"b": 3, "c": 4}
chain_map = ChainMap(dict1, dict2)
print(chain_map["a"]) # 輸出:1
print(chain_map["b"]) # 輸出:2,因?yàn)樵?dict1 中找到了 "b"
print(chain_map["c"]) # 輸出:4現(xiàn)在,您應(yīng)該對(duì) Python collections 模塊的各種容器數(shù)據(jù)類(lèi)型有了一個(gè)基本的了解。這些數(shù)據(jù)類(lèi)型旨在簡(jiǎn)化編程任務(wù),提高代碼可讀性和性能。在實(shí)際編程過(guò)程中,您可以根據(jù)需要選擇使用這些容器數(shù)據(jù)類(lèi)型。
以上就是python使用collections模塊的容器數(shù)據(jù)類(lèi)型高效處理數(shù)據(jù)的詳細(xì)內(nèi)容,更多關(guān)于python collections模塊的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python安裝并操作redis實(shí)現(xiàn)流程詳解
這篇文章主要介紹了Python安裝并操作redis實(shí)現(xiàn)流程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10
python求列表對(duì)應(yīng)元素的乘積和的實(shí)現(xiàn)
這篇文章主要介紹了python求列表對(duì)應(yīng)元素的乘積和的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
Python的Flask框架中的Jinja2模板引擎學(xué)習(xí)教程
這篇文章主要介紹了Python的Flask框架中的Jinja2模板引擎學(xué)習(xí)教程,Jinja2模板引擎的用法也是Flask的Web開(kāi)發(fā)中的重要知識(shí),需要的朋友可以參考下2016-06-06
Python+Opencv實(shí)現(xiàn)數(shù)字識(shí)別的示例代碼
這篇文章主要介紹了Python+Opencv實(shí)現(xiàn)數(shù)字識(shí)別的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
python3.6.3+opencv3.3.0實(shí)現(xiàn)動(dòng)態(tài)人臉捕獲
這篇文章主要為大家詳細(xì)介紹了python3.6.3+opencv3.3.0實(shí)現(xiàn)動(dòng)態(tài)人臉捕獲,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05
Python進(jìn)行指數(shù)和對(duì)數(shù)曲線擬合詳解
曲線擬合是構(gòu)造曲線或數(shù)學(xué)函數(shù)的過(guò)程,其具有對(duì)一系列數(shù)據(jù)點(diǎn)的最佳擬合,可能受到約束,本文主要介紹了如何使用Python實(shí)現(xiàn)指數(shù)和對(duì)數(shù)曲線擬合,需要的可以參考下2024-04-04
Django如何自定義model創(chuàng)建數(shù)據(jù)庫(kù)索引的順序
這篇文章主要介紹了Django如何自定義model創(chuàng)建數(shù)據(jù)庫(kù)索引的順序,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-06-06
python3.x實(shí)現(xiàn)發(fā)送郵件功能
這篇文章主要為大家詳細(xì)介紹了python3.x實(shí)現(xiàn)發(fā)送郵件功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05

