nametuple

  是tuple扩展子类,命名元组,其实本质上简单类对象

from collections import namedtupleinfo = namedtuple("Info", ['name', 'age', 'height'])
# 赋值,是不是有点像面向对象中实例变量方式
info.name = "北门吹雪"
info.age = 18
info.height = 175# 访问
print(info.name)

  其实本质上和下面方式一样

class Info:def __init__(self):self.name = Noneself.age = Noneself.height = Nonepassinfo = Info()
# 赋值
info.name = "北门吹雪"
info.age = 18
info.height = 175
# 访问
print(info.name)

  相关方法

    1. _make 初始化赋值, 必须长度一致

from collections import namedtupleinfo = namedtuple("Info", ['name', 'age', 'height'])._make(["北门吹雪", 18, 175])# 访问
print(info.name)

    2. _asdict  将nametuple对象转换为字典对象,是个有序字典

from collections import namedtupleinfo = namedtuple("Info", ['name', 'age', 'height'])._make(["北门吹雪", 18, 175])# 访问
print(info._asdict())

  

  

defaultdict

  是dict的扩展类,访问字典的key如果没有则自动设置默认值,并添加进字典

info = dict()
name = info.setdefault('name', "北门吹雪")
print(name, info)from collections import defaultdict
# 默认值必须是可迭代对象
info = defaultdict(lambda: "北门吹雪")
name = info['name']
print(name, info)

  

deque  

  双端队列, 操作和list类似

  list deque 推荐用来保存相同类似数据,相关方法和list一致

  特性: deque是线程安全的,list不是线程安全,多线程编程则使用deque

from collections import deque
names = deque()
names.append("北门吹雪")
names.append("QiNiuYun")
names.insert(0, "今日头条")
print(names)

  

Queue    

  队列(先进先出),通过 deque实现

  核心两个方法 put get,会堵塞

from queue import Queuemessage = Queue()
# 放入数据
message.put("北门吹雪")
# 消费数据
print(message.get())

  

Counter  

  对可迭代对象做统计出现个数,直接返回统计结果,是dict的子类

from collections import Counter
from random import randintnumbers = [randint(1, 5) for _ in range(20)]
numbers_count = Counter(numbers)
print(numbers_count)

  相关方法

    1. update        添加新的数据

from collections import Counter
from random import randintnumbers = [randint(1, 5) for _ in range(20)]
numbers_count = Counter(numbers)
print(numbers_count)
# 添加新的数据
numbers_count.update([randint(1, 10) for _ in range(20)])
print(numbers_count)

    2. most_common(N)   输出出现次数当前最多的前N个元素

from collections import Counter
from random import randintnumbers = [randint(1, 5) for _ in range(20)]
numbers_count = Counter(numbers)
print(numbers_count)
# 添加新的数据
numbers_count.update([randint(1, 10) for _ in range(20)])
print(numbers_count)# 输出出现次数当前最多的前3个元素,返回列表
print(numbers_count.most_common(3))

  

OrderDict

  继承dict, 保持字典添加顺序,具有dict所有方法

from collections import OrderedDictinfo = OrderedDict()
# 填入数据
info["name"] = "北门吹雪"
info['age'] = 18
info['height'] = 175
print(info)

  其他方法

    1. popitem    默认删除最后的key:value,并返回

from collections import OrderedDictinfo = OrderedDict()
# 填入数据
info["name"] = "北门吹雪"
info['age'] = 18
info['height'] = 175
# 返回元组形式
print(info.popitem('name'))

    2. pop      必须传入key,删除key:value,返回value

from collections import OrderedDictinfo = OrderedDict()
# 填入数据
info["name"] = "北门吹雪"
info['age'] = 18
info['height'] = 175# 返回age对应的值
print(info.pop('age'))

    3. move_to_end   传入key,将元素移到最后

from collections import OrderedDictinfo = OrderedDict()
# 填入数据
info["name"] = "北门吹雪"
info['age'] = 18
info['height'] = 175# 移动数据
info.move_to_end('age')
print(info)

arrary

  只能存放一种类型的数组,这个数组高性能非常高,非常类似list除了只能存放一种类型数据

 #标识符 存放数据类型  占用字节

  'u'     Unicode字符     2

  “L”    符号整数     4

  “L”    无符号整数    4

  “q”    符号整数     8

  “q”    无符号整数    8

  F      ′浮点                      4

  “D”             浮点                       8

import arraynames = array.array("u")
print(names.append("北"))
print(names.append("门"))
print(names.append("吹"))
print(names.append("雪"))
print(names)
print(names[1])

  

经验:

  1. 这些数据类型基础还是从list tuple set dict基本数据类型扩展而来,本质上添加了一些特性

  2. 不同的情况下选择不同的数据结构对数据进行处理

北门吹雪: https://www.cnblogs.com/2bjiujiu/

转载于:https://www.cnblogs.com/2bjiujiu/p/9141431.html

Python其他数据结构collection模块-namtuple defaultdict deque Queue Counter OrderDict arrary相关推荐

  1. python【数据结构与算法】 python3 deque模块(双端队列)

    文章目录 1 创建双向队列 2 右边添加元素 3 appendleft(往左边添加一个元素) 4 获取右边元素,并删除 5 popleft(获取最左边一个元素,并在队列中删除) 1 创建双向队列 im ...

  2. Python原生数据结构增强模块collections

    collections简介 python提供了4种基本的数据结构:list.tuple.dict.set.基本数据结构完全可以hold住所有的场景,但是在处理数据结构复杂的场景时,这4种数据结构有时会 ...

  3. python collections模块(数据结构常用模块)计数器Counter 双向队列deque 默认字典defaultdict 有序字典OrderedDict 可命名元组namedtuple

    collections 模块----Python标准库,是数据结构常用模块 常用类型有: 计数器(Counter) 双向队列(deque) 默认字典(defaultdict) 有序字典(Ordered ...

  4. python collection counter_python collection模块中几种数据结构(Counter、OrderedDict、namedtup)详解...

    collection模块中有几种数据结构我们可能用得到. Counter是字典的子类,负责计数的一个字典,支持 + 加法 - 减法 & 求公共元素 | 求并集 print('Counter类型 ...

  5. Python collection模块与深浅拷贝

    collection模块是对Python的通用内置容器:字典.列表.元组和集合的扩展,它包含一些专业的容器数据类型: Counter(计数器):dict子类,用于计算可哈希性对象的个数. Ordere ...

  6. Python常用数据结构之heapq模块

    Python数据结构常用模块:collections.heapq.operator.itertools heapq 堆是一种特殊的树形结构,通常我们所说的堆的数据结构指的是完全二叉树,并且根节点的值小 ...

  7. 第03章 Python的数据结构、函数和文件--Python for Data Analysis 2nd

    本章讨论Python的内置功能,这些功能本书会用到很多.虽然扩展库,比如pandas和Numpy,使处理大数据集很方便,但它们是和Python的内置数据处理工具一同使用的. 我们会从Python最基础 ...

  8. (python数据分析)第03章 Python的数据结构、函数和文件

    本章讨论Python的内置功能,这些功能本书会用到很多.虽然扩展库,比如pandas和Numpy,使处理大数据集很方便,但它们是和Python的内置数据处理工具一同使用的. 我们会从Python最基础 ...

  9. 第03章 Python的数据结构、函数和文件

    本章讨论Python的内置功能,这些功能本书会用到很多.虽然扩展库,比如pandas和Numpy,使处理大数据集很方便,但它们是和Python的内置数据处理工具一同使用的. 我们会从Python最基础 ...

最新文章

  1. Understand Skills-Based Routing
  2. Leetcode1704判断字符串的两半是否相似(C++题解)
  3. 跟开发对接,要了解哪些数据库知识?
  4. Centos7把一个文件复制到另外一台服务器上的scp命令
  5. python 怎么安装电脑摄像头模块_Python模块及安装
  6. 表单提交中get 和post方式的区别
  7. DHCP通过NAP认证
  8. android p过度动画,android 过渡动画
  9. MySQL5.7报错[ERROR] Unix socket lock file is empty /tmp/mysql.sock.lock的解决方法
  10. lenovo服务器换系统重装系统_联想电脑重装系统详细步骤?
  11. 【前端实战项目】手把手教你做出小米商城官网(HTML+CSS)
  12. P8195 [传智杯 #4 决赛] 小智的疑惑
  13. 腾讯微博android sdk,腾讯微博java(android)sdk新增微博api详细介绍
  14. vue写一个通讯录页面
  15. 阿里数据中台底座的12年建设实践
  16. 【C语言】基础知识梳理总结(超详细!!!!
  17. Hyperledger Fabric 1.3 官方文档翻译(三)关键概念 (Key Concepts) - 3.7 对等节点 (Peers)
  18. Java教程之多级缓存
  19. 计算机军中绿花谱子,军中绿花的曲谱_军中绿花简谱
  20. Win7+Win8双系统安装教程!零风险超简单2步搞定

热门文章

  1. 构建Android的交叉编译器、用NDK编译移植
  2. Android Zygote分析
  3. 以太坊虚拟机EVM的缺陷与不足
  4. mysql实时物化到clickhouse(MaterializeMySQL)
  5. linux安装包安装mysql5.7
  6. bios文件查看工具_修改BIOS让老主板支持NVMe固态硬盘
  7. 微信验证服务器是怎么回事,微信服务器认证为什么需要这么多参数?
  8. php管理员登录文件,快速的事情,只有管理员,PHP才能访问文件
  9. python中怎么输入角度_在Python中更正两点之间的角度
  10. 购进不需要安装的生产设备_静压砖机设备生产环境的选择及安装前期事项分析...