首页 > 编程语言 >python 中的 collections 模块:常用数据结构和工具详解

python 中的 collections 模块:常用数据结构和工具详解

时间:2023-12-06 23:04:21浏览次数:45  
标签:defaultdict 示例 python collections print import 数据结构 字典

Python 的 collections 模块提供了许多有用的数据结构,超越了标准的内置数据类型。这些数据结构解决了各种常见的编程问题,包括但不限于高效的容器类型、特定目的的容器、默认值字典等。让我们深入了解其中的几个重要数据结构和工具。

1. defaultdict:带有默认值的字典

defaultdictdict 的一个子类,它在创建时指定一个默认工厂函数来为字典提供默认值。

示例 1:统计字符出现次数

from collections import defaultdict

text = "apple"
char_count = defaultdict(int)

for char in text:
    char_count[char] += 1

print(char_count)
# 输出:defaultdict(<class 'int'>, {'a': 1, 'p': 2, 'l': 1, 'e': 1})

2. Counter:计数器

Counter 是用于计数可哈希对象的子类字典。它可用于快速计数,检查元素出现的次数等。

示例 2:统计列表中元素出现次数

from collections import Counter

numbers = [1, 2, 3, 4, 1, 2, 1, 3, 2]
number_count = Counter(numbers)

print(number_count)
# 输出:Counter({1: 3, 2: 3, 3: 2, 4: 1})

3. deque:双向队列

deque 是一个双向队列,可以在两端高效地进行添加和删除操作。

示例 3:实现队列和栈

from collections import deque

# 队列
queue = deque()
queue.append(1)
queue.append(2)
queue.popleft()  # 输出:1

# 栈
stack = deque()
stack.append(1)
stack.append(2)
stack.pop()  # 输出:2

4. namedtuple:命名元组

namedtuple 创建带有命名字段的元组,可以方便地为元组的字段命名。

示例 4:定义命名元组类型

from collections import namedtuple

Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)

print(p.x, p.y)  # 输出:1 2

5. ChainMap:链式映射

ChainMap 可以将多个字典或映射连接成一个单独的映射,无需创建新的字典。

示例 5:合并字典并查找值

from collections import ChainMap

dict1 = {'a': 1, 'b': 2}
dict2 = {'c': 3, 'd': 4}

chain = ChainMap(dict1, dict2)
print(chain['a'])  # 输出:1
print(chain['c'])  # 输出:3

这些示例展示了 collections 模块中几个重要的数据结构和工具的用法。它们为 Python 程序员提供了更多灵活和高效地处理数据的方式。


标签:defaultdict,示例,python,collections,print,import,数据结构,字典
From: https://blog.51cto.com/u_16170163/8711182

相关文章

  • python-名片管理系统
    一、系统需求目的一、回顾前面学过的变量、流程控制、函数、模块等 程序启动,显示名片和欢迎界面,并提示用户进行操作用户选择不同的功能,执行不同的操作用户名片中要记录的信息:姓名、电话、联系方式、邮件用户查询到指定的名片,可以进行修改、删除操作二、步骤框架搭建......
  • python-名片管理
    完整代码:#-*-coding:utf-8-*-#导入模块importparamimportcards_toolswhileTrue:#显示系统菜单cards_tools.show_menu()action=input("请选择操作功能:")print("您的选择操作是:%s"%action)#不带分号#根据用户的输入进行后续的操作......
  • python连接mysql、oracle数据库
    python版本:3.10.5mysql版本:8.0.27oracle版本:oracle12c一、python连接mysql数据库安装第三方依赖PyMySQL,终端执行如下命令:pipinstallPyMySQLPyMySQL使用importpymysqlconfig={'host':'127.0.0.1','port':3306,'u......
  • python的基础1
    基础笔记1.int转整数的时候不能转字符串:int('123'),这样会直接报错。但是使用flost的时候是可以转成小数的,但是也只能是由数字组合的字符串才可以,里面不能包含除了数字之外的所有的字符2.相除的时候,有小数点的是用/,不需要小数的时候使用//(小数点后的直接舍弃)3.全部转换为大写,判......
  • 【Python】【OpenCV】凸轮廓和Douglas-Peucker算法
    针对遇到的各种复杂形状的主体,大多情况下,我们可以求得一个近似的多边形来简化视觉图像处理,因为多边形是由直线组成的,这样就可以准确的划分区域来便捷后续的操作。 cv2.arcLength()Method:参数:curve:要计算周长的轮廓,可以是一个矩形、圆形、多边形等封闭曲线。closed:一个布尔......
  • python中级之异常处理
    什么是异常##异常是程序运行时可能发生的错误或意外情况##本篇博客主要写的是异常相关知识,在Python代码的编写过程中经常会出现异常,一般情况下程序员都叫做出BUG了,这个BUG就是臭虫的意思,表示程序出臭虫了。当然很多时候我们也戏称“无BUG,不编程”。异常的分类-内......
  • python异常处理
    【一】什么是异常异常是程序运行时可能发生的错误或意外情况。在Python中,异常是一种对象,表示程序执行期间发生的错误。当出现异常时,程序的正常流程会被中断,而是跳转到异常处理流程。【1】BaseException(所有异常的基类)SystemExit:解释器请求退出KeyboardInterrupt:用户中......
  • python中级之深浅拷贝
    深浅拷贝异同相同点:无论深拷贝还是浅拷贝都会创建一个新对象。即:拷贝出来的对象的id不同。不同点:浅拷贝:只拷贝了对象,对象内的元素并不会发生拷贝。深拷贝:不仅拷贝对象,对象内的元素也会发生拷贝。浅拷贝浅拷贝举例来看一个浅拷贝的例子:importcopya=[1,2,[3,4]]......
  • 大白话说Python+Flask入门(六)Flask SQLAlchemy操作mysql数据库
    写在前面这篇文章被搁置真的太久了,不知不觉拖到了周三了,当然,也算跟falsk系列说再见的时候,真没什么好神秘的,就是个数据库操作,就大家都知道的CRUD吧。FlaskSQLAlchemy的使用1、FlaskSQLAlchemy简介FlaskSQLAlchemy是基于Flaskweb框架和SQLAlchemyORM(对象关系映射)的工具......
  • 【python基础之数据类型的内置方法】--- 数据类型的内置方法
    title:【python基础之数据类型的内置方法】---数据类型的内置方法date:2023-12-0120:54:06updated:2023-12-0620:30:00description:【python基础之数据类型的内置方法】---数据类型的内置方法cover:https://home.cnblogs.com/u/dream-ze/【一】八大基......