Python中内建模块collections常见用法总结

1.Counter

  • Counter是字典对象的一个子类。Counter()函数是collections模块中的函数,它接收一个可迭代对象,例如list、tuple等,返回一个Counter字典。返回Counter字典的键是Counter()函数接收的可迭代对象中唯一的元素,Counter字典的值是Counter()函数接收的可迭代对象中唯一的元素的出现次数。
    from collections import Counter
    lis = [1, 2, 1, 3, 3, 2, 1, 2, 3, 2, 1, 3, 2, 2, 1]
    c = Counter(lis)  # 创建Counter类的一个对象c
    print(c)
    # result:
    Counter({2: 6, 1: 5, 3: 4})
    # 返回某个元素
    print(c[1])
    # 遍历整个对象c
    for k, v in c.items():
    	print(k, '---->', v)
    
most_common()函数的使用
  • Counter类的一个对象c中常用的函数是most_common(),当对象c调用most_common()函数时,返回的是包含N个由最常见元素和元素出现次数组成的元组作为基本列表元素构成的列表,其中N是自己指定的参数。
    from collections import Counter
    
    lis = [1, 2, 1, 3, 3, 2, 1, 2, 3, 2, 1, 3, 2, 2, 1]
    c = Counter(lis)
    c.most_common(2)
    # result:
    [(2, 6), (1, 5)]
    

2.defaultdict

  • defalutdict类似于Python中内建的字典,当使用defaultdict时,访问字典中不存在的键时,不会抛出异常。
  • defaultdict使用一个默认的值来初始化字典的键。字典值的设置需要根据创建defaultdict对象时来指定设置值的数据类型,具体代码如下:
    from collections import defaultdict
    
    names_dict = defaultdict(int)
    names_dict['curry'] = 1
    names_dict['harden'] = 2
    names_dict['durant'] = 3
    sara_number = names_dict['Sara']
    print(sara_number)
    # result
    0
    

3.deque

  • deque的最大容量是10,只能容纳10个元素

    from collections import deque
    
    my_deque = deque(maxlen=10)
    for i in range(10):
    	my_deque.append(i+1)
    print(my_deque)
    # result:
    deque([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], maxlen=10)
    
  • 在my_deque后再增加5个元素,就会将队列的队头前面开始的5个元素删除,再从队尾添加5个元素。

    for i in range(10,15):
    	my_deque.append(i+1)
    print(my_deque)
    # result
    deque([6, 7, 8, 9, 10, 11, 12, 13, 14, 15], maxlen=10)
    

4.namedtuple

  • 创建一个名字固定的元组,nametuple()函数接收两个参数,第一个参数接收名字固定的元组的name,第二个参数是元组的属性
    from collections import namedtuple
    
    Person = namedtuple('Person', 'name, age, job')
    Mike = Person(name='Mike', age=30, job='Data Science')
    Kate = Person(name='Kate', age=32, job='Project Manager')
    print(Mike)
    print(Kate)
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值