Python基础之collections模块

collections

collections是python内建的一个集合模块,提供了许多有用的集合类。具体如下:

1. namedtuple

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

2. defaultdict

我们在使用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})

3. Counter

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})

你可能感兴趣的:(python)