zoukankan      html  css  js  c++  java
  • 10.2、collections

    namedtuple   namedtuple('名称', [属性list])

     

    deque  支持appendleft()和popleft

    使用list存储数据时,按索引访问元素很快,但是插入和删除元素就很慢了,因为list是线性存储,数据量大的时候,插入和删除效率很低。

    deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈:

    defaultdict 

    使用dict时,如果引用的Key不存在,就会抛出KeyError。如果希望key不存在时,返回一个默认值,就可以用defaultdict.默认值是调用函数返回的,而函数在创建defaultdict对象时传入。

    OrderedDict

    使用dict时,Key是无序的。在对dict做迭代时,我们无法确定Key的顺序。

    如果要保持Key的顺序,可以用OrderedDict

     

    from collections import OrderedDict
    class LastUpdatedOrderedDict(OrderedDict):
        def __init__(self,capacity):
            super(LastUpdatedOrderedDict,self).__init__()
            self.capacity=capacity
            
        def __setitem__(self,key,value):
            containsKey=1 if key in self else 0
            if len(self)-containsKey >=self.capacity:
                last=self.popitem(last=False)
                print('removee:',last)
            if containsKey:
                del self[key]
                print('set:',(key,value))
            else:
                print('add:',(key,value))
            OrderedDict.__setitem__(self,key,value)

    ChainMap

    ChainMap可以把一组dict串起来并组成一个逻辑上的dictChainMap本身也是一个dict,但是查找的时候,会按照顺序在内部的dict依次查找。

    什么时候使用ChainMap最合适?举个例子:应用程序往往都需要传入参数,参数可以通过命令行传入,可以通过环境变量传入,还可以有默认参数。我们可以用ChainMap实现参数的优先级查找,即先查命令行参数,如果没有传入,再查环境变量,如果没有,就使用默认参数。

    Counter

    Counter是一个简单的计数器

  • 相关阅读:
    Qt 布局之二:水平、垂直布局的使用详解
    Qt 布局之一:布局初探
    [数据库] SQL 语法之进阶篇
    [数据库] SQL 语法之基础篇
    看图深入理解单链表的反转
    [数据结构
    (原)tslib的交叉编译
    (转) s-video vs. composite video vs. component video 几种视频格式详细说明和比较
    (转)BT1120接口及协议
    (转)Ubuntu12.04上NFS Server安装使用过程
  • 原文地址:https://www.cnblogs.com/soberkkk/p/12655290.html
Copyright © 2011-2022 走看看