【python学习】基础篇-常用模块-collections模块:数据结构,如列表、元组、字典和集合等

Python中的collections模块提供了一些有用的数据结构,如列表、元组、字典和集合等。

以下是collections模块中一些常用数据结构的用法:

  1. Counter类
    Counter类是一个字典子类,用于计数可哈希对象。
    它可以接受一个可迭代对象作为参数,并返回一个字典,其中键是可迭代对象中的元素,值是元素出现的次数。
python 复制代码
from collections import Counter

lst = [1, 2, 3, 2, 1, 3, 1]
counter = Counter(lst)
print(counter) # 输出{1: 3, 2: 2, 3: 2}
  1. OrderedDict类
    OrderedDict类是一个有序字典,它可以按照元素添加的顺序来迭代字典中的元素。
    与普通字典不同的是,OrderedDict类在创建时需要传入一个元素为键值对的列表。
python 复制代码
from collections import OrderedDict

od = OrderedDict()
od['a'] = 1
od['b'] = 2
od['c'] = 3
for k, v in od.items():
    print(k, v) # 输出a 1 b 2 c 3

3.deque类

deque类是一个双端队列,可以在队列的两端进行插入和删除操作。

它支持快速从队列两端添加或删除元素。

python 复制代码
from collections import deque

d = deque([1, 2, 3])
d.appendleft(0) # 在队列头部添加元素
d.append(4) # 在队列尾部添加元素
print(d) # 输出deque([0, 1, 2, 3, 4])

4.defaultdict类

defaultdict类是一个带有默认值的字典,当访问不存在的键时,会自动创建一个默认值。

它可以通过传递一个函数作为参数来创建。

python 复制代码
from collections import defaultdict

dd = defaultdict(int)
dd['a'] += 1
dd['b'] += 2
print(dd) # 输出defaultdict(<class 'int'>, {'a': 1, 'b': 2})

5.namedtuple

namedtuple是一个工厂函数,用于创建一个具有命名字段的元组子类。

它可以使代码更易读和维护,因为可以通过名称而不是索引来访问元组中的元素。

python 复制代码
from collections import namedtuple

Person = namedtuple('Person', ['name', 'age', 'gender'])
p = Person('Tom', 20, 'male')
print(p.name) # 输出Tom
print(p.age) # 输出20
print(p.gender) # 输出male

6.ChainMap

ChainMap是一个字典子类,它将多个字典链接在一起,形成一个单一的字典。

当访问一个不存在的键时,ChainMap会沿着链接的字典一直查找,直到找到该键或到达链表的末尾。

python 复制代码
from collections import ChainMap

dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}
dict3 = {'d': 5}
chain = ChainMap(dict1, dict2, dict3)
print(chain['a']) # 输出1
print(chain['b']) # 输出2
print(chain['c']) # 输出3
print(chain['d']) # 输出5
print(chain['e']) # 抛出KeyError异常
相关推荐
JJJJ_iii19 分钟前
【深度学习04】PyTorch:损失函数、优化器、模型微调、保存与加载
人工智能·pytorch·笔记·python·深度学习·机器学习
小熊出擊33 分钟前
【pytest】使用 marker 向 fixture 传递数据
python·pytest
Dest1ny-安全37 分钟前
Java代码审计-Servlet基础(1)
java·python·servlet
好开心啊没烦恼1 小时前
Python数据分析:使用爬虫从网页、社交媒体平台、论坛等公开资源提取中文和英文人名。
开发语言·爬虫·python·数据挖掘·数据分析
雨夜的星光1 小时前
Python环境管理工具全景对比:Virtualenv, Pipenv, Poetry 与 Conda
python·pycharm·conda·virtualenv
如意猴1 小时前
数据结构初阶(第六讲)单链表的功能实现
数据结构
lingggggaaaa1 小时前
小迪安全v2023学习笔记(九十七天)—— 云原生篇&Kubernetes&K8s安全&API&Kubelet未授权访问&容器执行
java·笔记·学习·安全·网络安全·云原生·kubernetes
十安_数学好题速析1 小时前
系数调整:四项平方和的最小值攻略
笔记·学习·高考
2401_841495641 小时前
【数据结构】链栈的基本操作
java·数据结构·c++·python·算法·链表·链栈
Archie_IT2 小时前
「深入浅出」嵌入式八股文—P2 内存篇
c语言·开发语言·数据结构·数据库·c++·算法