Python collections模块

本文介绍了Python标准库collections模块中的四个关键类:具名元组(namedtuple)用于创建带字段名的元组,双端队列(deque)提供高效的插入和删除操作,计数器(Counter)统计元素出现次数,以及默认字典(defaultdict)处理缺失键。这些工具有助于简化数据处理和算法实现。
摘要由CSDN通过智能技术生成

collections 模块是Python标准库中提供的一个模块,用于提供一些额外的数据容器和工具,扩展了内置的数据类型。它包含了一些有用的类和函数,用于处理各种数据结构和算法问题。下面是 collections 模块中常用的几个类的详细介绍:

1.namedtuple(具名元组):

namedtuple 是一个工厂函数,用于创建具有字段名的元组。它类似于普通的元组,但可以通过字段名进行访问,而不仅仅是通过索引。namedtuple 可以用于创建轻量级的数据对象,比如表示一条记录或数据点。使用 namedtuple 可以提高代码的可读性和易用性。

from collections import namedtuple

# 创建一个具名元组类 Point,包含 x 和 y 两个字段
Point = namedtuple('Point', ['x', 'y'])

# 创建具名元组对象
p = Point(1, 2)

# 访问具名元组中的字段
print(p.x)  # 输出: 1
print(p.y)  # 输出: 2

2.deque(双端队列):

deque 是一个双端队列,支持从两端高效地添加和删除元素。与列表相比,deque 在执行插入和删除操作时具有更好的性能,特别是在大型数据集上。deque 还提供了一些附加的方法,如旋转、扩展和反转等。

from collections import deque

# 创建一个双端队列
dq = deque([1, 2, 3])

# 从右侧添加元素
dq.append(4)

# 从左侧添加元素
dq.appendleft(0)

# 从右侧弹出元素
dq.pop()  # 返回 4

# 从左侧弹出元素
dq.popleft()  # 返回 0

# 旋转队列,将右侧的元素移动到左侧
dq.rotate(1)

3.Counter(计数器):

Counter 是一个简单的计数器类,用于统计可哈希对象的出现次数。它可以接受可迭代对象作为输入,并返回一个字典,其中包含对象作为键,出现次数作为值。Counter 还提供了一些方便的方法,如获取最常见的元素、计算总数等 

from collections import Counter

# 创建一个计数器
c = Counter(['a', 'b', 'a', 'c', 'b', 'a'])

# 统计元素的个数
print(c['a'])  # 输出: 3

# 获取最常见的元素和对应的次数
print(c.most_common(2))  # 输出: [('a', 3), ('b', 2)]

4.defaultdict(默认字典):

defaultdict 是一个字典的子类,它在访问不存在的键时返回一个默认值。通过指定默认工厂函数,可以自定义默认值的类型。defaultdict 在处理缺失键时非常有用,可以避免键错误和异常。

from collections import defaultdict

# 创建一个默认字典,指定默认值为 0
d = defaultdict(int)

# 访问不存在的键,默认返回 0
print(d['a'])  # 输出: 0

# 计数器示例
s = 'abracadabra'
counter = defaultdict(int)
for char in s:
    counter[char] += 1

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吹吹晚风-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值