zoukankan      html  css  js  c++  java
  • $python collections库

    collections库是python内置的集合库,本文主要讲解以下5种数据结构的用法:

    • namedtuple 命名元组,是tuple的子类
    • deque 双向列表
    • defaultdict 有默认值的字典,是dict的子类
    • OrderedDict key有序的字典,是dict的子类
    • Counter 计数器,是dict的子类

    准备工作

    from collections import namedtuple,deque,defaultdict,OrderedDict,Counter
    

    namedtuple (python 2.6+)

    用法:namedtuple('名称',[属性列表])

    Point = namedtuple('Point',['x','y'])
    p = Point(1,2)
    
    print '【Output】'
    print p
    print p.x,p.y
    print p.count,p.index
    print isinstance(p,Point)
    print isinstance(p,tuple)
    
    【Output】
    Point(x=1, y=2)
    1 2
    <built-in method count of Point object at 0x038B2288> <built-in method index of Point object at 0x038B2288>
    True
    True
    

    deque (python 2.4+)

    适用于队列和栈,插入和删除元素很高效。

    lst = ['a','b','c']
    dq = deque(lst)
    dq.append('d')
    print dq
    
    deque(['a', 'b', 'c', 'd'])
    
    dq.pop()
    
    'd'
    
    print dq
    
    deque(['a', 'b', 'c'])
    
    dq.appendleft('-1')
    
    print dq
    
    deque(['-1', 'a', 'b', 'c'])
    
    dq.popleft()
    
    '-1'
    
    print dq
    
    deque(['a', 'b', 'c'])
    

    defaultdict (python 2.5+)

    当key不存在的时候可返回一个默认值,默认值由传入的函数对象决定。

    dd = defaultdict(lambda:'N/A')
    dd['key1'] = 'aa';
    print dd['key1']
    print dd['key2']
    
    aa
    N/A
    

    OrderedDict(python 2.7+)

    key值有序的字典,顺序按照插入的顺序排序。

    data = [('a',1),('b',2),('c',3)]
    d = dict(data)
    print d
    
    {'a': 1, 'c': 3, 'b': 2}
    
    od = OrderedDict(data)
    print od
    
    OrderedDict([('a', 1), ('b', 2), ('c', 3)])
    

    Counter (python 2.7+)

    用序列生成Counter对象

    s = 'abcdeabcdabcaba'
    c = Counter(s)
    print c
    
    Counter({'a': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 1})
    
    print c.most_common(3)
    
    [('a', 5), ('b', 4), ('c', 3)]
    
    print sorted(c)
    
    ['a', 'b', 'c', 'd', 'e']
    
    print ''.join(sorted(c.elements()))
    
    aaaaabbbbcccdde
    
    print c.values()
    
    [5, 3, 4, 1, 2]
    
    print c.elements()
    
    <itertools.chain object at 0x039BC630>
    

    更新Counter对象

    d = Counter('bbb')
    c.update(d)
    
    print c.most_common()
    
    [('b', 7), ('a', 5), ('c', 3), ('d', 2), ('e', 1)]
    

    用字典生成Counter对象

    d = {'a':1,'b':2,'c':3}
    c = Counter(d)
    print c
    
    Counter({'c': 3, 'b': 2, 'a': 1})
    

    value值为字符串时,按照字典序排序

    d = {'a':'aa1','b':'ba1','c':'ca2'}
    c = Counter(d)
    print c
    
    Counter({'c': 'ca2', 'b': 'ba1', 'a': 'aa1'})
  • 相关阅读:
    Linux下几种文件传输命令 sz rz sftp scp
    jqGrid subGrid配置 如何首次加载动态展开所有的子表格
    MySQL使用规范
    Navicat连接MySQL报错2059
    微信小程序
    完美解决 ios10 及以上 Safari 无法禁止缩放的问题
    html5利用getObjectURL获取图片路径上传图片
    Vue的单页应用中如何引用单独的样式文件
    用JS添加和删除class类名
    APP中的 H5和原生页面如何分辨、何时使用
  • 原文地址:https://www.cnblogs.com/jiayongji/p/7442314.html
Copyright © 2011-2022 走看看