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

python模块之collections模块

  collections模块

  提供了一些额外的数据类型,供我们使用。

  namedtuple:命名元组

from collections import namedtuple
# 命名元组 namedtuple(typename, field_names) typename元组的名称  field_names元组中元素的名称
ret = namedtuple('zxc', ['x', 'y'])
print(ret)  # <class '__main__.zxc'>
p = ret(1, 2)  # 按顺序添加元素
p1 = ret(x=3, y=4)  # 按名称添加元素
print(p)    # zxc(x=1, y=2)
print(p1)    # zxc(x=3, y=4)
print(p.x)  # 1
print(p.y)  # 2

  

  deque:双向队列

  介绍双向队列之前,先说明一下队列是什么。队列是一种先进先出的数据结构,先放进去的要先取出。

import queue
q = queue.Queue()
q.put(1)    # put 给队列中添加元素
q.put(2)
q.put(3)
print(q.get())  # get 取出队列中的元素
print(q.get())
print(q.get())
print(q.qsize())  # 获取当前队列的元素个数
队列

   双向队列就是可以在前或后进行添加和取出操作的队列,原则也是一样,先进先出。

from collections import deque
# deque 双向队列
dp = deque()   # 双向队列 前后都可以添加元素
dp.appendleft('')   # 在队列前面添加元素
dp.append('')       # 在队列后面添加元素
print(dp)  # deque(['前', '后'])
print(dp.popleft())  # 相当于print(dp[0])   # 在队列前面取元素
print(dp.pop())  # 相当于print(dp[-1])     # 在队列后面添加元素
print(dp.index(''))   # 获取队列中某元素的索引 不存在报错

 

 

  OrderedDict:有序字典

from collections import OrderedDict
# OrderedDict 有序的字典
Od = OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')])
print(Od)  # OrderedDict([('k1', 'v1'), ('k2', 'v2')])
print(Od.get('k1'))  # 相当于print(Od['k1'])
for k in Od:   # 循环打印键  有序
    print(k)

 

  defaultdict:默认字典

from collections import defaultdict
# 默认字典 在字典还没有添加键值对时,就指定了默认值,添加的键在不赋值的情况下使用默认值
dic = defaultdict(list)  # 参数必须是可调用的对象
dic1 = defaultdict(lambda: 3)
print(dic['k1'])  # []
print(dic1['key'])  # 3
dic['k2'].append(1)
dic['k3'] = 'v3'   # 直接赋值就不使用默认值
print(dic)  # defaultdict(<class 'list'>, {'k1': [], 'k2': [1], 'k3': 'v3'})

 

转载于:https://www.cnblogs.com/zxc-Weblog/p/8275999.html

相关文章:

  • ElasticSearch集群介绍二
  • jquery ajax success 函数 异步调用方法中不能给全局变量赋值的原因及解决办法
  • 06人月神话阅读笔记
  • python之请求报文对比(假定最多二维字典)
  • spring_01介绍,搭建,概念,以及配置和属性注入
  • vue 手机端开发 小商铺 添加购物车 以及结算 功能
  • 【django基础】
  • iptables(1):iptables 基本概念
  • 爬虫-Beautiful Soup模块
  • python07-面向对象的程序设计
  • new Date()时间
  • LeetCode Find Permutation
  • postgressql sql查询拼接多个字段为一个字段查询出来
  • 计算并发用户数的五种方法
  • 非刚性人脸跟踪 —— 面部特征检测器
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • Shadow DOM 内部构造及如何构建独立组件
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 包装类对象
  • 初识MongoDB分片
  • 从零开始的无人驾驶 1
  • 关于使用markdown的方法(引自CSDN教程)
  • 计算机常识 - 收藏集 - 掘金
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 说说动画卡顿的解决方案
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • RDS-Mysql 物理备份恢复到本地数据库上
  • Semaphore
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • $.ajax()参数及用法
  • (1)(1.11) SiK Radio v2(一)
  • (Java)【深基9.例1】选举学生会
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (九)c52学习之旅-定时器
  • (一)认识微服务
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (转)c++ std::pair 与 std::make
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .NET导入Excel数据
  • .net反编译的九款神器
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • .NET使用HttpClient以multipart/form-data形式post上传文件及其相关参数
  • .net网站发布-允许更新此预编译站点
  • .NET下的多线程编程—1-线程机制概述
  • @Async注解的坑,小心