python中的collection模块

本文介绍了Python的collection模块,包括Counter类的计数功能,defaultdict类如何创建默认字典,OrderedDict类保持字典元素插入顺序,namedtuple用于创建可命名元组,以及deque双端队列的特性。这些数据结构在Python编程中提供了更高效和方便的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

collection模块引用:from collections import *

1. Counter类(最常用):计数器

counter相当于计数器,是对字典类型的补充,用于统计元素出现的次数,具备字典的所有功能+自己的功能。

  • 例子
from collections import *
string = "abcdedgaabbccdd"
out = Counter(string)
print(out)

输出Counter({'d': 4, 'a': 3, 'b': 3, 'c': 3, 'e': 1, 'g': 1})

2. defaultdict类:默认字典

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

  • 例子
from collections import *
members = [
    ['male', 'John'],
    ['male', 'Jack'],
    ['female', 'Lily'],
    ['male', 'Pony'],
    ['female', 'Lucy']
    ]

d= defaultdict(list)
for sex,name in members:
	d[sex].append(name)

print(d)

输出
defaultdict(<class 'list'>, {'male': ['John', 'Jack', 'Pony'], 'female': ['Lily', 'Lucy']})

3. OrderedDict类:有序字典

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

  • 例子
from collections import *
d1 = OrderedDict([('a', 1), ('z', 2), ('c', 3)])
d2 = Counter([('a',1),('z',2),('c',3)])
print(d1)
print(d2)

输出:

4. namedtuple类:可命名元组

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

  • 例子
Point = namedtuple('Point',['x','y'])
p = Point(2,1)
print(p)
print("x = ",p.x)
print("y = ",p.y)

输出:
Point(x=2, y=1)
x = 2
y = 1

5. deque类:双端队列(用的很少)

双端队列(deque)是一种支持向两端高效地插入数据、支持随机访问的容器。它最大的好处就是实现了从队列头部快速增加和取出对象: .popleft(), .appendleft() 。

参考博客
  • https://blog.youkuaiyun.com/quanlingtu1272/article/details/96969776?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
  • https://blog.youkuaiyun.com/bitcarmanlee/article/details/52735415?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值