python内建集合模块collections功能,计数,有序,双向队列
生活随笔
收集整理的這篇文章主要介紹了
python内建集合模块collections功能,计数,有序,双向队列
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、官方介紹
這個模塊實現了特定目標的容器,以提供Python標準內建容器 dict , list , set , 和 tuple 的替代選擇。
| deque | 類似列表(list)的容器,實現了在兩端快速添加(append)和彈出(pop) |
| ChainMap | 類似字典(dict)的容器類,將多個映射集合到一個視圖里面 |
| Counter | 字典的子類,提供了可哈希對象的計數功能 |
| OrderedDict | 字典的子類,保存了他們被添加的順序 |
| defaultdict | 字典的子類,提供了一個工廠函數,為字典查詢提供一個默認值 |
| UserDict | 封裝了字典對象,簡化了字典子類化 |
| UserList | 封裝了列表對象,簡化了列表子類化 |
| UserString | 封裝了列表對象,簡化了字符串子類化 |
下面只介紹幾種
二、counter計數類
# 統計相同元素出現的次數,可以是列表,字符串 counter_test = collections.Counter(["name","age","weight","name"]) print(counter_test) #Counter({'name': 2, 'age': 1, 'weight': 1})counter_test = collections.Counter("my name is maple") print(counter_test) #Counter({'m': 3, ' ': 3, 'a': 2, 'e': 2, 'y': 1, 'n': 1, 'i': 1, 's': 1, 'p': 1, 'l': 1})# 數量從大到小排列,獲取前N個元素 print(counter_test.most_common(3)) #[('m', 3), (' ', 3), ('a', 2)]# elements()取得計數器中的所有元素,獲取的是一個可迭代對象 print(counter_test.elements()) #<itertools.chain object at 0x0000017422610160> for i in counter_test.elements():print(i)# subtract()相減,原來的計數器中的每一個元素的數量減去后添加的元素的數量 counter_test.subtract('hello') print(counter_test) #Counter({'m': 3, ' ': 3, 'a': 2, 'y': 1, 'n': 1, 'e': 1, 'i': 1, 's': 1, 'p': 1, 'l': -1, 'h': -1, 'o': -1})# update()更新計數器 counter_test.update('hello') print(counter_test) #Counter({'m': 3, ' ': 3, 'a': 2, 'e': 2, 'y': 1, 'n': 1, 'i': 1, 's': 1, 'p': 1, 'l': 1, 'h': 0, 'o': 0})三、有序字典orderedDict
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' from collections import OrderedDict dic = OrderedDict() dic['name'] = 'maple' dic['age'] = '18' dic['weight'] = '70' print(dic) #OrderedDict([('name', 'maple'), ('age', '18'), ('weight', '70')])# move_to_end('name') 移動指定的鍵值對到最后 dic.move_to_end("name") print(dic) #OrderedDict([('age', '18'), ('weight', '70'), ('name', 'maple')])# 其他方法與普通字典一樣 print(dic.update({"heigh":"17"})) print(dic.pop("age")) print(dic.popitem()) print(dic.items()) print(dic.keys()) print(dic.values())四、默認字典defaultdict
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' import collections dic = collections.defaultdict(list) dic['name'].append('maple') print(dic)#defaultdict(<class 'list'>, {'name': ['maple']})# defaultdict作用:元素分類 # 案例,將相同的數字放入同一個字典values列表中 # dic={"2":[2,2],"3":[3]...} list1=[2,5,6,7,3,6,8,10,3,6,4,2]dic={} for i in list1:res=[]if str(i) in dic:dic[str(i)].append(i)else:res.append(i)dic[str(i)]=res print(dic)#{'2': [2, 2], '5': [5], '6': [6, 6, 6], '7': [7], '3': [3, 3], '8': [8], '10': [10], '4': [4]}dic=collections.defaultdict(list) for i in list1:if str(i) in dic:dic[str(i)].append(i)else:dic[str(i)].append(i) print(dic)#defaultdict(<class 'list'>, {'2': [2, 2], '5': [5], '6': [6, 6, 6], '7': [7], '3': [3, 3], '8': [8], '10': [10], '4': [4]})五、雙向隊列deque
from collections import deque #創建雙向隊列 d = deque() d.append('1') d.append('2')# append()向隊列中插入數據(從右邊插入) d.append('3') print(d)# appendleft()向隊列中插入數據(從左邊插入) d.appendleft('4') print(d)# clear()清空隊列 d.clear() print(d)# count()計數 d.append('1') d.append('1') print(d) print(d.count('1'))# extend()從右邊向隊列添加額外元素 d.extend(['a','b','c']) print(d)# extendleft()從左邊向隊列添加元素 d.extendleft(['d','e','f']) print(d)# index()取得元素索引 d.index('1')# insert()指定位置插入元素 d.insert(1,'z') print(d)# pop()從右邊移除一個元素 d.pop() print(d)# popleft()從左邊移除一個元素 d.popleft() print(d)# remove()移除指定元素 d.remove('1') print(d)# reverse()反轉隊列 d.reverse() print(d)# rotate()將右邊指定的元素個數移到隊列左邊 d.append('4') d.append('5') d.append('6') print(d) d.rotate(3) print(d)總結
以上是生活随笔為你收集整理的python内建集合模块collections功能,计数,有序,双向队列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python实用小方法
- 下一篇: python3 拼接字符串的7种方法