collections是python内建的一个集合模块,提供了许多有用的集合类。具体如下:
collectons.namedtuple(typename, fieldnames, *, verbose=False, rename = False, moudle=None)
namedtuple是一个函数,用来创建一个自定义的tuple对象,并且规定了tuple元素的个数,并且可以通过属性而不是下标来引用tuple队象的某个元素,使用起来更加方便。
import collections
Point = collections.namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p.x)
print(p.y)
p.x = 10 #修改元素会报错
print(isinstance(p, Point))
print(isinstance(p, tuple))#是tuple的一个子类
结果:
1
2
报错
True
True
我们在使用dict时,如果引用的key不存在的话,就会抛出keyerror的错误。如果希望当key不存在时返回一个默认值,就可以用defaultdict.除此,defaultdict的其他行为和字典完全一致。
import collections
dd = collections.defaultdict(lambda :'hhh')#参数可以是函数,可以是数据类型
dd['key1'] = 'wang'
print(dd['key1'])
print(dd['key2'])
结果:
wang
hhh
'''在实际应用时,比如说统计词频会更加方便'''
import collections
dd = collections.defaultdict(int)
for char in ['w', 'a', 'n', 'g', 'w', 'e', 'i']:
dd[char] += 1
print(dd)
结果:
defaultdict(<class 'int'>, {'w': 2, 'a': 1, 'n': 1, 'g': 1, 'e': 1, 'i': 1})
Counter是一个简单的计数器,例如:统计字符出现的次数
import collections
dd = collections.Counter(['w', 'a', 'n', 'g', 'w', 'e', 'i'])
print(dd)
结果:
Counter({'w': 2, 'a': 1, 'n': 1, 'g': 1, 'e': 1, 'i': 1})