zoukankan      html  css  js  c++  java
  • python模块之collections模块

    collections模块


    • collections提供了额外的几种数据类型:

      • namedtuple: 生成可以使用名字来访问元素内容的tuple
      • deque: 双端队列,可以快速的从另外一侧追加和推出对象
      • Counter: 计数器,主要用来计数
      • OrderedDict: 有序字典
      • defaultdict: 带有默认值的字典
    • namedtuple

      • >>> from collections import namedtuple
        >>> Point = namedtuple('Point', ['x', 'y'])
        >>> p = Point(1, 2)
        >>> p.x
        1
        >>> p.y
        2
    •  deque
      • >>> from collections import deque
        >>> q = deque(['a', 'b', 'c'])
        >>> q.append('x')
        >>> q.appendleft('y')
        >>> q
        deque(['y', 'a', 'b', 'c', 'x'])
    •  Counter
      • c = Counter('abcdeabcdabcaba')
        print c
        输出:Counter({'a': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 1})
    • OrderedDict
    >>> from collections import OrderedDict
    >>> d = dict([('a', 1), ('b', 2), ('c', 3)])
    >>> d # dict的Key是无序的
    {'a': 1, 'c': 3, 'b': 2}
    >>> od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
    >>> od # OrderedDict的Key是有序的
    OrderedDict([('a', 1), ('b', 2), ('c', 3)])
    
    
    # 注意,OrderedDict的Key会按照插入的顺序排列,不是Key本身排序:
    >>> od = OrderedDict()
    >>> od['z'] = 1
    >>> od['y'] = 2
    >>> od['x'] = 3
    >>> od.keys() # 按照插入的Key的顺序返回
    ['z', 'y', 'x']
    • defaultdict
        • from collections import defaultdict
          
          values = [11, 22, 33,44,55,66,77,88,99,90]
          
          my_dict = defaultdict(list)
          
          for value in  values:
              if value>66:
                  my_dict['k1'].append(value)
              else:
                  my_dict['k2'].append(value)
          # 使用dict时,如果引用的Key不存在,就会抛出KeyError。如果希望key不存在时,返回一个默认值,就可以用defaultdict:
          
          >>> from collections import defaultdict
          >>> dd = defaultdict(lambda: 'N/A')
          >>> dd['key1'] = 'abc'
          >>> dd['key1'] # key1存在
          'abc'
          >>> dd['key2'] # key2不存在,返回默认值
          'N/A'
  • 相关阅读:
    09-异常处理-成绩判断异常
    继承与多态———动手动脑
    课下作业04-2String的使用方法
    课下作业04-1字符串加密
    课下作业03-2动手动脑及验证
    课下作业03-1请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象?
    课下作业02-动手动脑
    Myschool试题
    使用ADO.NET
    模糊查询和聚合函数
  • 原文地址:https://www.cnblogs.com/wangyuanming/p/7511440.html
Copyright © 2011-2022 走看看