python优雅编程_Python优雅编程——Collections模块中的高性能数据类型
Python中內置了4 種數據類型,列表(List),元組(Tuple),集合(Set),字典(Dict)。這些數據類型都有其各自的特性,但是有些特性,比如字典無序,在一定程度上對數據類型的使用產生了約束,在某些場景下效率會比較低,Python collections 屬于對這些基礎數據類型的補充模塊。由于Python collections屬于內建模塊,因此不需要安裝。
接下來,我們介紹一下Python collections模塊常用的四種方法。
defaultdict:字典的子類,提供了一個工廠函數,為字典查詢提供一個默認值。
orderedDict:字典的子類,保存了他們被添加的順序。
deque:類似列表(List)的容器,實現了在兩端快速添加(append)和刪除(pop)。
Counter:字典的子類,提供了可哈希對象的計數功能。
defaultdict
我們在Python中使用字典時,當字典的鍵(Key)不存在時,直接添加值(Value)時會出現KeyError錯誤,示例如下。
使用defaultdict可以優雅的規避該錯誤,defaultdict 是對字典類型的補充,它可以給字典的值設置一個默認數據類型,當字典的鍵(Key)不存在時,可以自動生成相應默認類型的值(Value),示例如下:
在如上例子中,我們可以看到,即使defaultdict對象不存在某個鍵(Key)時,它會自動創建一個空列表。另外,同樣的功能使用 defaultdict 比使用 dict.setdefault 方法快。
orderedDict
在Python3.6 版本之前的字典是無序的,然而有些時候我們需要保持字典的有序性,跟蹤到字典鍵(Key)添加先后順序。orderedDict可以實現字典的有序性,即按照字典鍵(Key)插入的順序來排列,這樣就實現了一個先進先出的字典,當容量超出限制時,先刪除最早添加的鍵(Key),示例如下:
我們需要注意的是,對于普通的字典,即使傳入的順序不一樣,但是仍然是相同的字典;但如果是orderedDict,當傳入的順序不一樣時,那么得到的字典是不一樣的,示例如下:
deque
Python中的列表(List)是基于數組實現的,查找容易,但插入和刪除操作時間復雜度較大。 deque實現了高效實現插入和刪除操作的雙向列表(也叫做雙端隊列),適合用于隊列和棧,并且線程安全。
列表(List)只提供了append和pop方法,實現從列表(List)的尾部插入或刪除元素。deque新增了appendleft、popleft 等方法可以更高效的在列表的開頭插入或刪除元素,示例如下:
Counter
Counter 屬于字典的子類,主要作用是統計可哈希對象出現的次數。追蹤元素出現的次數同時按照從高到低的順序排列成字典,元素被作為字典的鍵(Key)存儲,它們的計數作為字典的值(Value)存儲,示例如下:
同時Counter內部提供了很多方法對結果進行處理,如most_common方法獲取出現次數最多的前N個元素,如下:
總結
以上是生活随笔為你收集整理的python优雅编程_Python优雅编程——Collections模块中的高性能数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 连接 iOS_iOS连接my
- 下一篇: asp建站系统源码_三款适用于企业建站的