模块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·······
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章