Python 中的集合:你需要知道的一切

已發表: 2021-04-09

Python是一種強大的編程語言。 它是模塊化的,以其簡單性、可重用性和可維護性而聞名。 在模塊化編程中,大型而復雜的編程任務被分解成更小的模塊。

本文討論Python 中的模塊集合 Collection 改進了功能,是 Python 的通用內置 dict、list、set 和 tuple 容器的替代品。

“Python 列表、元組、集合和字典是用戶定義的數據結構,每個都有自己的優點和缺點。”

目錄

Python 模塊

模塊是包含 Python 定義和實現一組函數的語句的文件。 import 命令用於從其他模塊導入模塊。 Python 有幾個內置模塊。

現在讓我們來到文章的重點,詳細學習Python中的模塊集合。

Python 中的集合

Python中的 Collection 是存儲數據集合的容器。 List、set、tuple、dict 等是Python 中的內置集合 Python 中有六個集合模塊,它們提供額外的數據結構來存儲數據集合。 這些 Python 模塊增強了內置容器集合的操作。

我們現在將討論Python模塊中的集合提供的不同容器。

1.有序字典

OrderedDict() 的工作方式類似於字典對象,其中鍵保持插入的順序。 如果你想再次插入key,之前的值會被覆蓋,key的位置不會改變。

例子:

從集合中導入 OrderedDict

d1=collections.OrderedDict()

d1['A']=1

d1['B']=2

d1['C']=3

d1['D']=4

對於 d1.items() 中的 x,v:

打印 (x,v)

輸出:

1

乙二

C 3

4

2.雙端隊列()

Python deque() 是一個優化的列表,可以從兩個極端添加和刪除項目。

例子:

從集合中導入雙端隊列

list1 = [“a”,”b”,”c”]

deq = deque(list1)

打印(deq)

輸出:

雙端隊列(['a','b','c'])

3.計數器

計數器是對可散列對象進行計數的字典對象的子組。 計數器函數輸入可迭代作為參數,並將輸出作為字典返回。 鍵是可迭代元素,值是元素在可迭代元素中出現的總次數。

例子:

從集合中導入計數器

c = 計數器()

list1 = [1,2,3,4,5,7,8,5,9,6,10]

計數器(list1)

計數器({1:5,2:4})

list1 = [1,2,4,7,5,1,6,7,6,9,1]

c = 計數器(列表 1)

打印(c[1])

輸出:

3

附加計數器功能

1.elements()函數

elements()函數返回Counter對像中存在元素列表

例子:

c = 計數器({1:4,2:3})

打印(列表(c.elements()))

輸出:

[1,1,1,1,2,2,2]

在這裡,使用字典參數創建一個Counter對象。 1 的計數為 4,2 的計數為 3。調用函數elements()c對象返回一個迭代器。

2. most_common() 函數

Counter() Python 函數返回一個無序字典,而most_common()函數根據每個元素計數對其進行排序。

例子:

列表 = [1,2,3,4,5,5,5,7,3]

c = 計數器(列表)

打印(c.most_common())

輸出:

[((5,3), (1,1),(2,1),(3,2),(4,1), (7,1))]

在這裡, most_common函數根據元素的計數返回一個排序列表。 5 來了 3 次; 因此,它作為列表的元素首先出現。

3. 減法()函數

subtract()考慮可迭代或映射參數,並用參數減去元素計數。

例子:

c = 計數器({1:2,2:3})

輸出= {1:1,2:1}

c.減法(輸出)

打印(c)

輸出:

計數器({1:1,2:2})

4. 鏈圖對象

Chainmap 類將多個字典分組以創建單個列表。 鏈接字典是公共的,可以通過 map 屬性訪問。

例子:

從集合中導入鏈圖

dict1 = {'w':1,'x':2}

dict2 = {'y':3。'z':4}

鏈映射 = 鏈映射(dict1,dict2)

打印(chain_map.maps)

輸出:

[{'x' : 2, 'w' :1}, {'y' : 3, 'x':4}]

5.命名元組

namedtuple() 函數返回一個元組對象,其中包含元組中每個位置的名稱。 引入它是為了消除記住元組對象的每個字段的索引的問題。

例子:

從集合中導入命名元組

學生 = namedtuple ('學生','名, 姓, 年齡')

s1 = 學生('Tom'、'Alter'、'12')

打印(s1.firstname)

輸出:

學生(名字='湯姆',姓氏='Alter',年齡='12')

在此示例中,您可以訪問類的任何實例的字段。

6.默認字典

Python defaultdict() 是一個字典對象,是 dict 類的子類。 它提供所有字典方法,但將第一個參數作為默認數據類型。 當您訪問不存在的密鑰時,它會引發錯誤

例子:

從集合中導入 defaultdict

num = defaultdict(int)

數字['一個'] = 1

數字['兩個'] = 2

打印(數字['三個'])

輸出:

0

結論

眾所周知,Python 中的集合可以改進 Python 集合模塊 這些集合是在 2.4 版本的 Python 中引入的。 在後續版本中可以預期會有很多變化和改進。 在本文中,我們通過示例解釋了Python 中現有的六個集合以及它們在該語言中的實現方式。 從學習者的角度來看,它們是最重要的概念之一。

通過upGrad獨有的計算機應用學士程序學習Python 中的集合 該計劃涵蓋了進入 IT 行業所需的必要技能。

如果您想了解 Python、數據科學,請查看 IIIT-B 和 upGrad 的數據科學執行 PG 計劃,該計劃專為在職專業人士而設,提供 10 多個案例研究和項目、實用的實踐研討會、與行業專家的指導,與行業導師一對一,400 多個小時的學習和頂級公司的工作協助。

在線學習世界頂尖大學的數據科學課程獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。

為什麼我們需要 Python 中的集合模塊?

Python 已經有 4 種內置的集合數據類型。 它們是列表、元組、字典和集合。 但是,這些數據容器用於一般目的。
以下幾點突出了使用收集模塊相對於內置數據容器的主要優勢。
集合模塊提供了這些容器的專用版本,例如 namedtuple、OrderedDict、defaultdict、chainmap、counter 等等。
由於更加優化,這些容器被證明是傳統數據容器(如列表、元組和集合)的更好替代品。
收集模塊可以有效地處理結構化數據。
像 namedtuple 這樣的數據容器消耗更少的內存並提供增強的操作來存儲和管理數據。

Python中的字典和有序字典有什麼區別?

Python 字典或“Dict”是 Python 的內置數據結構,用於存儲無序的元素集合。 與其他存儲單個值的 Python 數據結構不同,字典數據結構存儲鍵值對,其中每個鍵都是唯一的。 它不記得鍵值對的插入順序並遍歷鍵。
另一方面,Ordered Dictionary 或 OrderedDict 會跟踪鍵值對的插入順序。 由於它的雙向鍊錶實現,它還比 Python 中的常規字典消耗更多的內存。 如果您刪除並重新插入相同的鍵,它將被插入到原來的位置,因為 OrderedDict 會記住插入順序。

namedtuple 的各種操作是什麼?

Python 中的 namedtuple 執行各種操作。 以下是 namedtuple 執行的一些最常見操作的列表。
1. 訪問操作:按索引訪問:namedtuple 中的元素可以通過其索引訪問,這與字典不同。 按鍵名訪問:訪問元素的另一種方法是通過鍵名。
2.轉換操作: make():這個函數返回一個namedtuple。 _asadict():此函數返回從映射值構造的有序字典。 使用“**”(雙星)運算符:此函數將 Python 字典轉換為命名元組。
3. 附加操作: _fileds():該函數返回給定命名元組的所有鍵名。 _replace():此函數將鍵名作為其參數並更改映射到它的值。