当前位置: 首页 > news >正文

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

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

  1. Counter类
    Counter类是一个字典子类,用于计数可哈希对象。
    它可以接受一个可迭代对象作为参数,并返回一个字典,其中键是可迭代对象中的元素,值是元素出现的次数。
from collections import Counterlst = [1, 2, 3, 2, 1, 3, 1]
counter = Counter(lst)
print(counter) # 输出{1: 3, 2: 2, 3: 2}
  1. OrderedDict类
    OrderedDict类是一个有序字典,它可以按照元素添加的顺序来迭代字典中的元素。
    与普通字典不同的是,OrderedDict类在创建时需要传入一个元素为键值对的列表。
from collections import OrderedDictod = 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类是一个双端队列,可以在队列的两端进行插入和删除操作。
它支持快速从队列两端添加或删除元素。

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

4.defaultdict类
defaultdict类是一个带有默认值的字典,当访问不存在的键时,会自动创建一个默认值。
它可以通过传递一个函数作为参数来创建。

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

5.namedtuple
namedtuple是一个工厂函数,用于创建一个具有命名字段的元组子类。
它可以使代码更易读和维护,因为可以通过名称而不是索引来访问元组中的元素。

from collections import namedtuplePerson = 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会沿着链接的字典一直查找,直到找到该键或到达链表的末尾。

from collections import ChainMapdict1 = {'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异常
http://www.lryc.cn/news/241353.html

相关文章:

  • 【电路笔记】-电源电压
  • kali部署ARL灯塔资产系统及使用教程
  • 一、用户管理
  • Could not publish to the server. java.lang.NullPointerException
  • SpringMVC(三)
  • 打印菱形-第11届蓝桥杯选拔赛Python真题精选
  • 『亚马逊云科技产品测评』活动征文|搭建Squoosh图片在线压缩工具
  • 基于亚马逊云科技大语言模型等服务打造企业知识库
  • FFmpeg 使用
  • NLP的使用
  • Navicat DML 操作
  • Springboot-热部署-IDEA2023
  • 人工智能和AR/VR:AI在AR和VR中扮演什么角色?行业应用有哪些?
  • Linux进程通信之共享内存
  • 接口自动化测试:pytest基础讲解
  • 基于JavaWeb+SpringBoot+Vue医院管理系统小程序的设计和实现
  • 收藏这几个开源库,写css你会笑出声
  • 给localStorage缓存添加全局监听器
  • blk_mq_init_queue函数学习记录
  • 高防服务器的工作原理
  • 2023.11.19使用flask制作一个文件夹生成器
  • 【04】ES6:字符串的扩展
  • Docker可视化管理界面工具Portainer安装
  • css实现水波纹效果
  • 一种全新且灵活的 Prompt 对齐优化技术
  • 8:kotlin 类型检查和转换(Type checks and casts)
  • 命令模式 (Command Pattern)
  • 蓝桥杯官网练习题(奇怪的数列)
  • flink的异常concurrent.TimeoutException: Heartbeat of TaskManager with id的解决
  • 火电安全事故vr模拟仿真培训强交互更真实