Python內(nèi)建模塊collections實現(xiàn)特殊容器數(shù)據(jù)類型
一、namedtuple
namedtuple()
函數(shù)是一個工廠函數(shù),它返回一個子類,這個子類繼承自 tuple 類,并且擁有名字,這個名字就是你傳給 namedtuple()
的第一個參數(shù)。這個子類的實例就像一個普通的元組,但是還提供了方便的屬性訪問。
namedtuple
是一種定義小型和不可變的數(shù)據(jù)類的簡單方法。
from collections import namedtuple # 創(chuàng)建一個namedtuple類型User,并包含name和age兩個屬性。 User = namedtuple('User', ['name', 'age']) # 創(chuàng)建一個User對象 user = User(name='user1', age=23) print(user.name) # 輸出:user1 print(user.age) # 輸出:23
二、deque
deque
(雙向隊列)是一種來自 collections
模塊的容器,它提供了從左端和右端高效、快速地添加和刪除元素的功能。
from collections import deque # 創(chuàng)建一個deque d = deque(['a', 'b', 'c']) # 從右端添加元素 d.append('d') # d現(xiàn)在是deque(['a', 'b', 'c', 'd']) # 從左端添加元素 d.appendleft('e') # d現(xiàn)在是deque(['e', 'a', 'b', 'c', 'd']) # 從右端刪除元素 d.pop() # 返回 'd', d現(xiàn)在是deque(['e', 'a', 'b', 'c']) # 從左端刪除元素 d.popleft() # 返回 'e', d現(xiàn)在是deque(['a', 'b', 'c'])
三、Counter
collections
模塊的Counter
類是一個簡單的計數(shù)器,例如,它可以用來統(tǒng)計字符的個數(shù):
from collections import Counter c = Counter('hello world') # 從一個可迭代對象創(chuàng)建 print(c) # 輸出 Counter({'l': 3, 'o': 2, 'h': 1, 'e': 1, ' ': 1, 'w': 1, 'r': 1, 'd': 1})
Counter
對象有一個有用的方法most_common(n)
,該方法返回計數(shù)最多的n個元素的列表,每個元素是一個元組,元組的第一個元素是元素本身,第二個元素是元素的計數(shù)。
四、defaultdict
defaultdict
是dict的一個子類,它接受一個工廠函數(shù)作為默認(rèn)值,當(dāng)查找的鍵不存在時,可以實例化一個值作為默認(rèn)值。
from collections import defaultdict # 使用列表(list)作為default_factory,當(dāng)鍵不存在時,返回一個空列表。 dd = defaultdict(list) # 添加一個鍵值對 dd['dogs'].append('Rufus') dd['dogs'].append('Kathrin') dd['dogs'].append('Mr Sniffles') print(dd['dogs']) # 輸出: ['Rufus', 'Kathrin', 'Mr Sniffles']
五、OrderedDict
OrderedDict
是dict的一個子類,它記住了元素插入的順序。在Python 3.7之前,普通的dict并不保證鍵值對的順序,而OrderedDict
則按照插入的順序排列元素。
從Python 3.7開始,dict也會保持插入順序,但是OrderedDict
仍然有它的特性,如重新排列字典的順序等。
from collections import OrderedDict d = OrderedDict() d['first'] = 1 d['second'] = 2 d['third'] = 3 d['last'] = 4 # 輸出 "first 1", "second 2", "third 3", "last 4" for key in d: print(key, d[key])
六、結(jié)論
collections
模塊中還包含有其他有用的工具,如ChainMap
、UserDict
、UserList
等等,這些都是非常實用的集合類。使用和理解這些數(shù)據(jù)結(jié)構(gòu)可以讓我們在編程中更加得心應(yīng)手,代碼更加高效和清晰。
上述這些是 collections
模塊中最常用的一些數(shù)據(jù)結(jié)構(gòu),理解和熟練使用這些工具,可以極大提高我們編程的效率。希望這篇文章能幫助你深入理解Python中的collections
模塊,能夠更好的使用Python進行編程。
以上就是Python內(nèi)建模塊collections實現(xiàn)特殊容器數(shù)據(jù)類型的詳細內(nèi)容,更多關(guān)于Python collections模塊的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Flask框架通過Flask_login實現(xiàn)用戶登錄功能示例
這篇文章主要介紹了Flask框架通過Flask_login實現(xiàn)用戶登錄功能,結(jié)合實例形式較為詳細的分析了flask框架使用Flask_login實現(xiàn)用戶登陸功能的具體操作步驟、相關(guān)實現(xiàn)技巧與操作注意事項,需要的朋友可以參考下2018-07-07解決Python爬蟲錯誤之twisted.web.error.SchemeNotSupported: Unsu
這篇文章主要介紹了解決Python爬蟲錯誤之twisted.web.error.SchemeNotSupported: Unsupported scheme: b''問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02Python經(jīng)驗總結(jié):兩種Type?Error問題
這篇文章主要介紹了Python經(jīng)驗總結(jié):兩種Type?Error問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09Python實現(xiàn)多子圖繪制系統(tǒng)的示例詳解
這篇文章主要介紹了如何利用python實現(xiàn)多子圖繪制系統(tǒng),文中的示例代碼講解詳細,具有一定的的參考價值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-09-09在OpenCV里實現(xiàn)條碼區(qū)域識別的方法示例
這篇文章主要介紹了在OpenCV里實現(xiàn)條碼區(qū)域識別的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12