zoukankan      html  css  js  c++  java
  • collections

    collections高级数据类型

    • 这个模块实现专门的容器数据类型提供替代Python的通用内置容器 dict,list, set,和tuple。

      namedtuple() 用于创建具有命名字段的元组子类的工厂函数
      deque 类似列表的容器,两端都有快速追加和弹出
      ChainMap 类似于dict的类,用于创建多个映射的单个视图
      Counter 用于计算可哈希对象的dict子类
      OrderedDict 记住元素添加顺序的dict子类
      defaultdict dict子类调用工厂函数来提供缺失值
      UserDict 包装字典对象以便于dict子类化
      UserList 包装列表对象以便于列表子类化
      UserString 包装字符串对象以便于字符串子类化

    namedtuple() 具有命名字段的元组的工厂函数

    from collection import namedtuple
    point = namedtuple('坐标',['x','y'])	#第一个参数是命名元组的构造器;第二个参数可以传入可迭代对象
    point = namedtuple('坐标',('x','y')	#第一个参数是命名元组的构造器;第二个参数可以传入可迭代对象
    point = namedtuple('坐标',[x,y])	#第一个参数是命名元组的构造器;第二个参数可以传入可迭代对象
    p = point(1,5)
    print(p)
    print(type(p))                   
    #坐标(x=1, y=5)
    #<class '__main__.坐标'>                   
                       
    

    OrderdDict对象

    有序词典就像常规词典一样,但它们记住了项目的插入顺序。迭代有序字典时,将按照首次添加键的顺序返回项目。

    #python 中字典默认是无需
    from collection import OrderDict
    

    返回一个dict子类的实例,支持通常的dict 方法。一个OrderedDict是记住键第一次被插入的顺序的字典。如果新条目覆盖现有条目,则原始插入位置保持不变。删除条目并重新插入它会将其移至最后。

    from collections import OrderedDict
    d = OrderedDict({'name':'zcy','age':'18'})
    c = d.get('name')
    print(d,c)
    #OrderedDict([('name', 'zcy'), ('age', '18')]) zcy
    

    popitem(last=True)

    返回并删除一个(key, value)对。如果last=True,则以LIFO顺序(后进先出,从后面开始返回)返回对,如果为false 则以FIFO(先进先出)顺序返回 。

    from collections import OrderedDict
    d = OrderedDict({'name':'zcy','age':'18'})
    print(d.popitem())
    d.update({'age':22})
    print(d.popitem(last=False))
    #('age', '18')
    #('name', 'zcy')
    
    

    move_to_end(key, last=True)

    将现有键移动到有序字典的另一端。该项目被移动到右端(如果last=True(默认)),或一开始( 如果last=False)。如果key不存在则引发KeyError

    d = OrderedDict.fromkeys('abcde')
    c = d.move_to_end('b')
    c= ''.join(d.keys())
    print(c)
    

    用途

    由于有序字典会记住其插入顺序,因此它可以与排序结合使用以生成排序字典:

    d = {'red':4,'cayt':8,'yellow':2,'blue':3}
    c = OrderedDict(sorted(d.items(),key=lambda t:t[1]))	#索引可为0,1
    print(c)
    #OrderedDict([('yellow', 2), ('blue', 3), ('red', 4), ('cayt', 8)])
    
  • 相关阅读:
    【JAVA】java 堆溢出分析
    【数据结构】链表的基本学习 实现
    【其他】博客园自定义样式指南
    【JAVA】一些好用的开源java类库
    【Shell】Shell 常用命令
    【Spring】Spring Boot 要点整理
    【数据库】Mysql 连接相关
    【Linux】Shell 参数解析
    Erlang 中类型转换
    erlang 中 maps 练习
  • 原文地址:https://www.cnblogs.com/kai-/p/11882809.html
Copyright © 2011-2022 走看看