首页 > 其他 > 详细

10.2、collections

时间:2020-04-07 19:53:46      阅读:55      评论:0      收藏:0      [点我收藏+]

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是一个简单的计数器

技术分享图片

 

10.2、collections

原文:https://www.cnblogs.com/soberkkk/p/12655290.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!