python的collections模塊

今天我們來學習一下基礎知識之python模塊----collections

除python提供的內置數(shù)據(jù)類型(int、float、str、list、tuple、dict)外,collections模塊還提供了其他數(shù)據(jù)類型,使用如下功能需先導入collections模塊(import collections):
計數(shù)器(counter)
有序字典(orderedDict)
默認字典(defaultdict)
可命名元組(namedtuple)
雙向隊列(deque)

一、 計數(shù)器(Counter):統(tǒng)計元素的個數(shù),并以字典形式返回{元素:元素個數(shù)}

import collections
x = 'asadadawdsdasdawdasdawdawdawedwqdfrgfdrgrthrhr'
collections.Counter(x)
返回值
Counter({'d': 12, 'a': 10, 'w': 6, 'r': 5, 's': 4, 'f': 2, 'g': 2, 'h': 2, 'e': 1, 'q': 1, 't': 1})
###默認從大到小排序
Counter類包含方法如下:

1. most_common:將元素出現(xiàn)的次數(shù)按照從高到低進行排序,并返回前N個元素,若多個元素統(tǒng)計數(shù)相同,按照字母順序排列,N若未指定,則返回所有元素

collections.Counter(x).most_common(3)
返回值:[('d', 12), ('a', 10), ('w', 6)]##注意這里返回的是列表

2. elements:返回一個迭代器,元素被重復多少次,在迭代器中就包含多少個此元素,所有元素按字母序排列,個數(shù)<1的不羅列

list(collections.Counter(x).elements())
返回值['a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 's', 's', 's', 's', 'd', 'd', 'd', 'd', 'd', 'd', 'd', 'd', 'd', 'd', 'd', 'd', 'w', 'w', 'w', 'w', 'w', 'w', 'e', 'q', 'f', 'f', 'r', 'r', 'r', 'r', 'r', 'g', 'g', 't', 'h', 'h']

3. update:增加元素的重復次數(shù)

collections.Counter(x)
返回值
Counter({'d': 12, 'a': 10, 'w': 6, 'r': 5, 's': 4, 'f': 2, 'g': 2, 'h': 2, 'e': 1, 'q': 1, 't': 1})
collections.Counter(x).update('d')
返回值
Counter({'d': 12, 'a': 10, 'w': 6, 'r': 5, 's': 4, 'f': 2, 'g': 2, 'h': 2, 'e': 1, 'q': 1, 't': 1})
###說明直接使用不起作用
y = collections.Counter(x)
y.update('d')
y
返回值
Counter({'d': 13, 'a': 10, 'w': 6, 'r': 5, 's': 4, 'f': 2, 'g': 2, 'h': 2, 'e': 1, 'q': 1, 't': 1})

4. subtract:減少元素重復次數(shù)

同樣的,直接使用不起作用
collections.Counter(x).subtract('d')###不起作用
y.subtract('d')
y
返回值:
Counter({'d': 11, 'a': 10, 'w': 6, 'r': 5, 's': 4, 'f': 2, 'g': 2, 'h': 2, 'e': 1, 'q': 1, 't': 1})
###相應的元素減一

這個可以配合element一起使用。

二、有序字典(orderedDict):繼承了dict的所有功能,dict是無序的,orderedDict剛好對dict作了補充,記錄了鍵值對插入的順序,是有序字典

說明:python v3.6之前的版本dict是無序的,3.6版本之后(含v3.6)dict是有序的,目測為了兼容性以及100%有序性考慮,建議實現(xiàn)有序功能時使用orderedDict

import collections as co
co.OrderedDict({'name':'zhaoyunfei','sex':'man','age':27})
返回值:
OrderedDict([('name', 'zhaoyunfei'), ('sex', 'man'), ('age', 27)])
###注意這里的返回結果
orderedDict類補充方法:
x = co.OrderedDict({'name':'zhaoyunfei','sex':'man','age':27})
x.clear()    ###清空字典
返回值   OrderedDict()            ####實際上好像沒什么用??

x.popitem()   ####有序刪除,類似于棧,按照后進先出的順序依次刪除
返回值:
OrderedDict([('name', 'zhaoyunfei'), ('sex', 'man')])

x.pop('age')       ###刪除指定的鍵值對
返回值:
OrderedDict([('name', 'zhaoyunfei'), ('sex', 'man')])             ###類似于列表的pop

x.setdefault('zhao')  ###設置默認值,默認為None,也可指定值
返回值
OrderedDict([('name', 'zhaoyunfei'), ('sex', 'man'), ('zhao', None)])
x.setdefault('zhao','love')  ###設置默認值
返回值
OrderedDict([('name', 'zhaoyunfei'), ('sex', 'man'), ('zhao', 'love')])

x.update({'美少女':'我愛你'})  更新字典,有則更新,無則添加
返回值
OrderedDict([('name', 'zhaoyunfei'), ('sex', 'man'), ('zhao', 'love'), ('美少女', '我愛你')])

三、默認字典(defaultdict):設置values默認類型,如list、tuple

import collections as co
co.defaultdict(list)  ###指定value的類型
###與字典的功能類似

當然還有很多其他的功能,常用的都在這里了。。

這是基礎,請保持憤怒,讓王多余傾家蕩產

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容