python内建模块之collections

namedtuple

  1. namedtuple用来创建一种自定义的tuple对象,并且规定tuple元素的个数。并且用属性而不是用索引来引用tuple的某个元素。这样,用namedtuple可以很方便地定义一种数据类型

    #创建
    from collections import namedtuple
    Point = namedtuple('Point',['x','y'])
    #使用
    p = Point(1,2)
    print(p.x)
    print(isinstance(p,point)
    print(isinstance(p,tuple)
    
    #打印结果
    1
    True
    True
    
    #同样的,用坐标和半径表示一个圆
    Circle = namedtuple('Circle',['x','y','r']
    

deque

  1. 在数据量大的情况下,使用列表插入和删除比较慢。使用deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈。

    集合除了支持append,pop,还支持appendleft,popleft

    from collections import deque
    q = deque(['a','b','c'])
    q.append('x')
    q.appendleft('y')
    print(q)
    #打印结果
    deque(['y', 'a', 'b', 'c', 'x'])
    
    

defaultdict

使用字典的时候,如果引用的key不在,会报出KeyErorr。如果希望key不存在时返回一个默认值,可以使用defaultdict。

from collections import defaultdict
dict1 = defaultdict(lambda:'N/A')
dict1['key1'] = 'aa'
print(dict1['key1']
print(dict1['key2']

#打印结果
'aa'
'N/A'

注意的是,返回值是通过函数返回的,而函数在创建defaultdict对象时导入

OrderedDict

使用dict时,key是无序的。要保持dict的顺序,可以用OrderedDict
但要注意的是,OrderedDict并不是按照key的属性来排序的,而是按照输入顺序去排序的

from collections import OrderedDict
dict1 = dict([('a', 1), ('b', 2), ('c', 3)])
order_dict1 = OrderedDict([('a', 1), ('b', 2), ('c', 3)])

print(dict1)
print(order_dict1)

#打印结果
{'a': 1, 'c': 3, 'b': 2}
OrderedDict([('a', 1), ('b', 2), ('c', 3)])

Counter

Counter是一个简单的计数器

from collections import Counter
c = Counter()
for ch in 'programming':
	c[ch] = c[ch]+1
print(c)

#打印结果
Counter({'g': 2, 'm': 2, 'r': 2, 'a': 1, 'i': 1, 'o': 1, 'n': 1, 'p': 1})
c.update('hello')
print(c)
Counter({'r': 2, 'o': 2, 'g': 2, 'm': 2, 'l': 2, 'p': 1, 'a': 1, 'i': 1, 'n': 1, 'h': 1, 'e': 1})
#打印结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值