今天我們來學習一下基礎知識之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的類型
###與字典的功能類似
當然還有很多其他的功能,常用的都在這里了。。
這是基礎,請保持憤怒,讓王多余傾家蕩產