collections模塊常用類清單及示例
一、Counter類
用途:用于對數據進行統計,并能自動按照元素出現次數進行排序。還可通過update方法繼續添加數據進行統計,以及使用most_common方法獲取出現次數最多的前幾個元素。
示例代碼:
python
復制
from collections import Counter
# 對字符串中的字符進行統計
result = Counter("sfasfsfsdfdsfdsfsfdsfwkjewrjwi")
print(result)
# 加入更多數據接著統計
result.update("sdfsdfsd")
print(result)
# 獲取出現次數最多的前3個元素
print(result.most_common(3))
二、defaultdict類
用途:幫助我們創建一個默認值為統一類型的字典,避免在訪問不存在的鍵時因未定義值類型和初始值而報錯,簡化了對字典值進行某種操作(如計數)的過程。
示例代碼:
python
復制
# 要把list轉dict并計算列表中元素重復個數(常規方式)
list_t = ["A", "C", "B", "F", "B"]
dicts_t = {}
for item in list_t:
dicts_t.setdefault(item, 0)
dicts_t[item] += 1
print(dicts_t)
# 使用defaultdict實現上述功能(更簡單化這個過程)
from collections import defaultdict
dic_b = defaultdict(int)
for item in list_t:
dic_b[item] += 1
print(dic_b)
三、deque類(雙隊列)
用途:一般用于實現先進后出的隊列操作,插入和移除數據比常規列表快,但遍歷查找性能相對較差。
示例代碼:
點擊查看代碼
python
復制
from collections import deque
my_que = deque(["A", "B", "C", "D"])
print(my_que)
my_que.append("F")
print(my_que)
my_que.pop()
print(my_que)
四、namedtuple類
用途:快捷幫助我們生成一個類似常用的Class對象類,適用于需要輸出一個簡單對象但又不想完整定義一個類的情況,類似一次性使用的對象。
示例代碼:
點擊查看代碼
python
復制
import logging
logging.basicConfig(level="INFO")
# 傳統寫法定義類并創建對象
class Student():
def __init__(self, name, age) -> None:
self.name = name
self.age = age
def __str__(self) -> str:
return f"name:{self.name},age:{self.age}"
student = Student("zhangsan", 15)
print(student)
# 使用collection的namedtuple創建類似對象
from collections import namedtuple
User = namedtuple("User", ["name", "age"])
user1 = User("lisi", 20)
user2 = User("wangwu", 30)
logging.info(user1)
五、OrderedDict類
用途:能夠保證字典的插入順序,并非是對字典按照鍵或值進行排序。不過在 Python 3.7 版本及以上,普通字典已經是按照插入順序寫入,所以OrderedDict的使用場景相對減少。
示例代碼:
點擊查看代碼
python
復制
from collections import OrderedDict
my = {"A": 1, "F": 4, "G": 3, "B": 8}
my["G"] = 6
print(my)
my_order = OrderedDict(my)
my_order["H"] = 2
my_order.move_to_end("F")
print(my_order)
浙公網安備 33010602011771號