模塊01----Collections

collections的常用類型有:
計數器(Counter)
雙向隊列(deque)
默認字典(defaultdict)
有序字典(OrderedDict)
可命名元組(namedtuple)
使用以上類型時需要導入模塊 from collections import *

1. Counter
Counter 作爲字典(dict)的一個子類用來進行hashtable計數,將元素進行數量統計、計數後返回一個字典,鍵值爲元素:值爲元素個數
>>> from collections import *
>>> a =  'absolutely'
>>> Counter(a)
Counter({'l': 2, 'a': 1, 'b': 1, 's': 1, 'o': 1, 'u': 1, 't': 1, 'e': 1, 'y': 1})
>>>
# most_common(int) 按照元素出現的次數進行從高到低的排序,返回前int個元素的字典 
>>> Counter(a).most_common(3)
[('l', 2), ('a', 1), ('b', 1)]
>>>
# elements 返回經過計數器Counter後的元素,返回的是一個迭代器
>>> c=Counter(a).elements()
>>> for i in c:
 print(i)
 
a
b
s
o
l
l
u
t
e
y
>>>
2.deque
deque 包含在文件_collections.py中,屬於高性能的數據結構(High performance data structures)之一.可以從兩端添加和刪除元素,常用的結構是它的簡化版。
>>> dq = deque('abc123')
>>> dq.append('right')
>>> dq.appendleft('left')
>>> dq
deque(['left', 'a', 'b', 'c', '1', '2', '3', 'right'])
>>>

3.defaultdict
默認字典,是字典的一個子類,繼承有字典的方法和屬性,默認字典在進行定義初始化的時候可以指定字典值得默認類型:

>>> dic = collections.defaultdict(dict) 
>>> dic['k1'].update({'k2':'aaa'}) 
>>> print(dic) 
我們看上面的例子,字典dic在定義的時候就定義好了值爲字典類型,雖然現在字典中還沒有鍵值 k1,但仍然可以執行字典的update方法. 這種操作方式在傳統的字典類型中是無法實現的,必須賦值以後才能進行值得更新操作,否則會報錯。
我看看一下傳統的字典類型
>>> b = dict() 
>>> b['k1'].append('2') 
# TypeError: 'type' object is not iterable 

4.OrderedDict
OrderDict 叫做有序字典,也是字典類型(dict)的一個子類,是對字典的一個補充。
# 定義有序字典 
>>> dic2 = OrderedDict() 
>>> dic2['a'] = '123' 
>>> dic2['b'] = 'jjj' 
>>> dic2['c'] = 'abc' 
>>> dic2['d'] = '999' 
>>> for k, v in dic2.iteritems(): 
    print('有序字典:%s:%s' %(k,v)) 
5.nametuple
nametuple 的創建是由自己的類工廠nametuple()進行創建,而不是由標準的元組來進行實例化,通過nametuple()創建類的參數包括類名稱和一個包含元素名稱的字符串
WAITING FOR UPDATING·······
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章