您的位置:首页 > 财经 > 产业 > 网站盈利方式_江苏建设类专业技术人员资格考试_网络销售话术900句_百度托管运营哪家好

网站盈利方式_江苏建设类专业技术人员资格考试_网络销售话术900句_百度托管运营哪家好

2025/4/29 21:00:52 来源:https://blog.csdn.net/qq_27390023/article/details/145653761  浏览:    关键词:网站盈利方式_江苏建设类专业技术人员资格考试_网络销售话术900句_百度托管运营哪家好
网站盈利方式_江苏建设类专业技术人员资格考试_网络销售话术900句_百度托管运营哪家好

collections 模块是 Python 标准库中的一个强大工具,提供了多种高级数据结构,扩展了内置的数据类型(如 listdictsettuple)。这些数据结构可以提高代码的可读性和效率。

1. collections 模块的主要内容

(1)namedtuple

namedtuple 创建一个类似于 tuple 的不可变对象,但它的元素可以通过 名称 访问,而不是索引。

示例:

from collections import namedtuple# 创建一个 namedtuple 类型
Point = namedtuple('Point', ['x', 'y'])p = Point(10, 20)
print(p.x, p.y)  # 10 20
print(p[0], p[1])  # 10 20

用途: 适用于返回多个相关值的场景,比如点坐标、RGB 颜色等。

(2)deque(双端队列)

deque 是一个高效的双端队列(支持从两端插入/删除元素),相比 list,它的 O(1) 复杂度的 appendleft() 和 popleft() 适用于队列和栈操作。

示例:

from collections import dequedq = deque([1, 2, 3])
dq.append(4)       # 右侧添加
dq.appendleft(0)   # 左侧添加
print(dq)  # deque([0, 1, 2, 3, 4])dq.pop()           # 右侧弹出
dq.popleft()       # 左侧弹出
print(dq)  # deque([1, 2, 3])

用途: 适用于FIFO 队列(如任务调度)或LIFO 栈

(3)Counter(计数器)

Counter 用于统计可迭代对象中元素出现的次数,返回一个 dict 形式的对象。

示例:

from collections import Counterwords = ['apple', 'banana', 'apple', 'orange', 'banana', 'apple']
counter = Counter(words)
print(counter)  # Counter({'apple': 3, 'banana': 2, 'orange': 1})# 取出现次数最多的两个单词
print(counter.most_common(2))  # [('apple', 3), ('banana', 2)]

用途: 适用于文本分析、数据统计等。

(4)OrderedDict(有序字典)

OrderedDict 记录了键值对插入的顺序(Python 3.7+ 的 dict 默认也是有序的)。

示例:

from collections import OrderedDictod = OrderedDict()
od['a'] = 1
od['b'] = 2
od['c'] = 3print(od)  # OrderedDict([('a', 1), ('b', 2), ('c', 3)])

用途: 适用于需要保持字典顺序的场景,如 JSON 解析。

(5)defaultdict(带默认值的字典)

defaultdict 允许你为字典的键提供默认值,避免 KeyError

示例:

from collections import defaultdict# 默认值是 list,缺失的键返回空列表
dd = defaultdict(list)
dd['a'].append(1)
dd['b'].append(2)print(dd)  # defaultdict(<class 'list'>, {'a': [1], 'b': [2]})
print(dd['c'])  # 返回默认值: []

用途: 适用于需要自动初始化嵌套数据结构的情况,如分组统计

6)ChainMap(多个字典合并)

ChainMap 可以把多个字典合并,并且按顺序查找键值

示例:

from collections import ChainMapdict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}cm = ChainMap(dict1, dict2)
print(cm['a'])  # 1(来自 dict1)
print(cm['b'])  # 2(dict1 覆盖 dict2)
print(cm['c'])  # 4(来自 dict2)

用途: 适用于多层次配置管理,如全局变量+本地变量


2. collections.abc 抽象基类

在 collections.abc 模块中,定义了一些常见的抽象基类(ABC,Abstract Base Classes),用于标准化各种容器类型的行为。例如:

  • Iterable:可迭代对象(实现 __iter__ 方法)
  • Iterator:迭代器(实现 __next__ 方法)
  • Mapping:不可变字典(类似 dict
  • MutableMapping:可变字典(类似 dict,但支持修改)

示例:

from collections.abc import Mapping, MutableMapping# dict 继承自 MutableMapping
print(issubclass(dict, MutableMapping))  # True
print(issubclass(dict, Mapping))  # True

用途: 适用于类型检查,以及自定义数据结构

总结

collections 提供了丰富的数据结构:

  1. 命名元组namedtuple
  2. 高效双端队列deque
  3. 元素计数Counter
  4. 有序字典OrderedDict
  5. 默认值字典defaultdict
  6. 多字典管理ChainMap
  7. 抽象基类(ABC)collections.abc

这些工具在数据分析、文本处理、缓存管理等场景非常有用!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com