zoukankan      html  css  js  c++  java
  • python常用内建模块--collections

    1.namedtuple

    #namedtuple是一个函数,它用来创建一个自定义的tuple对象,并且规定了tuple元素的个数,并可以用属性而不是索引来引用tuple的某个元素。
    #这样一来,我们用namedtuple可以很方便地定义一种数据类型,它具备tuple的不变性,又可以根据属性来引用,使用十分方便。
    from collections import namedtuple
    Point = namedtuple('Point',['x','y'])
    p = Point(112.3451,35.3324)
    print(p,':',p.x,',',p.y)

    2.deque

    #deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈:
    from collections import deque
    d = deque(['a','b','c'])
    print(d)
    d.append('d')
    print(d)
    d.appendleft('a0')
    print(d)
    d.pop()
    print(d)
    d.popleft()
    print(d)
    """
    Point(x=112.3451, y=35.3324) : 112.3451 , 35.3324
    deque(['a', 'b', 'c'])
    deque(['a', 'b', 'c', 'd'])
    deque(['a0', 'a', 'b', 'c', 'd'])
    deque(['a0', 'a', 'b', 'c'])
    deque(['a', 'b', 'c'])
    """

    3.defaultdict

    #defaultdict,使用dict时,如果引用的Key不存在,就会抛出KeyError。如果希望key不存在时,返回一个默认值,就可以用defaultdict
    from collections import defaultdict
    d = defaultdict(lambda :'N/A')
    d['key1']=1
    print(d['key1'])
    print(d['key2'])
    '''
    1
    N/A
    '''

    4.Orderedict

    #OrderedDict使用dict时,Key是无序的。在对dict做迭代时,我们无法确定Key的顺序。如果要保持Key的顺序,可以用OrderedDict:
    #OrderedDict可以实现一个FIFO(先进先出)的dict,当容量超出限制时,先删除最早添加的Key:
    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('remove:', last)
    if containsKey:
    del self[key]
    print('set:', (key, value))
    else:
    print('add:', (key, value))
    OrderedDict.__setitem__(self, key, value)

    5.Counter

    #Counter是一个简单的计数器,例如,统计字符出现的个数:
    from collections import Counter
    c = Counter()
    print(c)
    print(type(c))
    for ch in 'programing':
    c[ch]=c[ch]+1
    print(c)
    '''
    Counter()
    <class 'collections.Counter'>
    Counter({'r': 2, 'g': 2, 'n': 1, 'o': 1, 'm': 1, 'a': 1, 'p': 1, 'i': 1})
    '''
  • 相关阅读:
    DataSingleton单例
    iOS平台XML解析类库对比和安装说明
    ASIHTTPRequest类库简介和使用说明
    IOS开发之格式化日期时间
    iOS多线程编程之NSThread的使用
    Django的Xadmin后台集成富文本Ueditor
    Django DEBUG=False后静态文件加载失败
    Python多进程
    linux平台虚拟环境依赖安装
    SQLite基础使用
  • 原文地址:https://www.cnblogs.com/wuchenggong/p/8865812.html
Copyright © 2011-2022 走看看