python中的collection模块

collection模块额外提供了几种高级数据类型:

  • namedtuple():生成可以使用名字来访问元素内容的tuple子类
  • deque:双端队列,可以快速的从另外一侧追加和推出对象
  • counter:计数器
  • ordereddict:有序字典
  • defaultdict:带有默认值的字典

namedtuple():可命名元组

tuple是一个不可变集合,namedtuple用来构建一个自定义的tuple对象,并且规定了tuple元素的个数,可通过属性而不是索引来引用tuple的某个元素,我们可以通过namedtuple很方便的自定义一个数据类型,它具有tuple的不变属性又可以根据属性来引用。

from collections import namedtuple
point = namedtuple('point',['x','y'])
p = point(2,1)
print(p)
print("x=",p.x)
print("y=",p.y)

# 结果如下
x=2
y=1
isinstance(p,point)
True
isinstance(p,tuple)
True

类似创建一个圆,通过坐标,半径r,用namedtuple构建

Circle = nametuple('circle',['x','y','r'])

ordereddict:有序字典

dict中key是无序的,在做迭代时,无法确认key的顺序。ordereddict是对字典类型的补充,他记住了字典元素添加的顺序。

from collections import OrderedDict
od = OrderedDict([('a', 1), ('z', 2), ('c', 3)])
print od
d = dict([('a',1),('z',2),('c',3)])
print d

# 结果如下
OrderedDict([('a', 1), ('z', 2), ('c', 3)])
{'a': 1, 'c': 3, 'z': 2}

defaultdict:默认字典 

defaultdict是对字典类型的补充,它默认给字典的值设置了一个类型

在使用python原生的数据结构dict的时候,如果用d[key]这样的方式访问,当指定的key不存在时,是会抛出keyerror异常,但是,如果使用defaultdict,只要传入一个默认的工厂方法,那么请求一个不存在的key时,便会调用这个工厂方法使其结果来作为这个key的默认值。

counter:计数器

counter是对字典类型的补充,用于追踪值出现的次数,具备字典的所有功能+自己的功能

from collections import Counter
c = Counter(['11','22','11','33','11','44','55'])
c2 = Counter("abcdefdasfdsafaf")
print c
print c2


# 结果如下
Counter({'11': 3, '33': 1, '44': 1, '22': 1, '55': 1})
Counter({'a': 4, 'f': 4, 'd': 3, 's': 2, 'c': 1, 'b': 1, 'e': 1})

 

 

 

 

 

 

你可能感兴趣的:(python中的collection模块)