Python Collections是Python標準庫中的一個模塊,它提供了許多內置容器類型的替代選擇。這個模塊的目的是為了解決Python內置容器類型的不足,並提供了一些額外的容器類型。
一、Python Collections概述
Python Collections是Python標準庫中的一個模塊,它提供了幾個特殊的容器類型,這些容器類型沒有內置數據類型的限制,因此提供了更好的性能。Python collections模塊是一個可擴展的容器類型集合,具有五種內置容器類型:Counter、defaultdict、namedtuple、OrderedDict和deque。該模塊還提供了一個抽象基類,即Container。本指南將涵蓋每個類、其方法和示例。
二、Python Collections中的常用類
Counter類
Counter類是一個有序字典,它跟蹤可哈希對象的出現次數。當我們需要為一組數據計數時,它非常有用,比如統計每個單詞出現的頻率。
from collections import Counter words = ['dog', 'cat', 'dog', 'fish', 'cat', 'dog'] count = Counter(words) print(count) # Counter({'dog': 3, 'cat': 2, 'fish': 1})
在上面的示例中,我們使用列表中的單詞創建一個Counter對象。結果會告訴我們每個單詞出現的次數。
defaultdict類
defaultdict類是dictionary的一個子類,它覆蓋了一個方法並添加了一個可調用對象,因此它能夠在添加缺失的項時自動創建值。
from collections import defaultdict animals = defaultdict(lambda: 'Not in the dictionary') animals['dog'] = 'An animal' print(animals['dog']) print(animals['lion']) # Not in the dictionary
在上面的示例中,我們定義了一個defaultdict,它將返回一個自定義的字符串,當給定的鍵不存在時。當我們添加’dog’到字典裏面時,將返回’An animal’,查詢key為’lion’時將返回我們自定義的字符串’Not in the dictionary’。
namedtuple類
namedtuple是一個工廠函數,它返回一個元組的子類,並為每個字段提供了一個名稱。元組的子類是普通元組的變體,支持對元組字段的引用,可以通過名稱和索引來訪問元素。
from collections import namedtuple person = namedtuple('Person', ['name', 'age', 'gender']) p1 = person('Bob', 30, 'Male') print(p1.name) # Bob
在上面的示例中,我們定義了一個名為person的namedtuple,它有三個字段:’name’、’age’和’gender’。然後我們創建一個名為p1的新對象,用於存儲具有name、age和gender屬性的人員的信息。
OrderedDict類
OrderedDict類是Python的字典類的子類,它存儲了鍵添加的順序。這種類型是有序的,因為它保留了鍵的添加順序,這在寫代碼時非常有用,避免了鍵的順序進行了隨機的更改。
from collections import OrderedDict fruits = OrderedDict([('apple', 20), ('orange', 10), ('banana', 5)]) print(fruits) # OrderedDict([('apple', 20), ('orange', 10), ('banana', 5)])
在上面的示例中,我們創建了一個OrderedDict對象,它包含了三個鍵值對。字典的輸出與我們添加鍵值對的順序相應。
deque類
deque類是一種具有高效插入和刪除元素的數據結構。他支持從開頭和結尾同時刪除和添加元素。如果你的程序中需要處理隊列類型的數據,deque能夠使這些操作更加高效。
from collections import deque dq = deque(range(5)) # dq: deque([0, 1, 2, 3, 4]) dq.append(5) # dq: deque([0, 1, 2, 3, 4, 5]) dq.appendleft(-1) # dq: deque([-1, 0, 1, 2, 3, 4, 5])
在上面的示例中,我們創建了一個deque,初始化為[0,1,2,3,4]。我們可以從隊列的右側添加新元素,也可以從左側添加。這是在隊列的左側添加元素的方法。
三、相關鏈接
原創文章,作者:BEPR,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/131900.html