zoukankan      html  css  js  c++  java
  • Python之容器类Collections

    容器类Collections

    标签(空格分隔): Python进阶


    1. defaultdict
    2. counter
    3. deque
    4. namedtuple

    defaultdict

    defaultdict的作用是可以不用检查key是否存在,如果不存在可以直接创建。 而不像dict,会raise KeyError.

    示例代码:

    some_dict = {}
    some_dict['colours'] = "yellow"
    # Raises KeyError: 'colours'
    

    示例代码2:

    from collections import defaultdict
    some_dict = defaultdict()
    some_dict['colours'] = 'yellow'
    #  it works
    

    defaultdict的经典用法
    示例代码3:

    from collections import defaultdict
    
    colours = (
        ('Yasoob', 'Yellow'),
        ('Ali', 'Blue'),
        ('Arham', 'Green'),
        ('Ali', 'Black'),
        ('Yasoob', 'Red'),
        ('Ahmed', 'Silver'),
    )
    
    favourite_colours = defaultdict(list)
    
    for name, colour in colours:
        favourite_colours[name].append(colour)
    

    Counter

    Counter可以帮助计算一个iterable或者mapping中各个item的出现次数。

    示例代码4:

    from collections import Counter
    
    colours = (
        ('Yasoob', 'Yellow'),
        ('Ali', 'Blue'),
        ('Arham', 'Green'),
        ('Ali', 'Black'),
        ('Yasoob', 'Red'),
        ('Ahmed', 'Silver'),
    )
    
    favs = Counter(name for name, colour in colours)
    print(favs)
    # Output: Counter({
    #    'Yasoob': 2,
    #    'Ali': 2,
    #    'Arham': 1,
    #    'Ahmed': 1
    # })
    

    deque

    deque == double ended queue 双头队列
    deque 可以从左/右 进元素和出元素。

    示例代码5:

    from collections import deque
    d = deque()
    d.append('1')
    d.append('2')
    d.append('3')
    d.appendleft('4')
    d
    #output:  deque([4, 1, 2, 3])
    d = deque(range(5))
    print d
    # output: deque([0, 1, 2, 3, 4])
    d.pop()
    #output: 4
    d.popleft()
    #output: 0
    print d
    #output:  deque([1,2,3])
    d.extendleft([0])
    d.extend([6,7,8])
    print d
    #output: deque([0, 1, 2, 3, 6, 7, 8])
    

    namedtuple

    tuple和list的区别就是tuple是不可变的,tuple在初始化好了之后,元素不能插入也不能删除.
    而namedtuple也继承了不可变的性质,但是它有点像dict,元素是key-value形式的,也就是named的由来,在初始化之后,可以通过name来访问元素。

    示例代码6:

    from collections import namedtuple
    #tuple_name  = namedtuple('tuple_name', 'item1_name, item2_name,...')
    Animal = namedtuple('Animal', 'name age type')
    
    perry = Animal(name="perry", age=31, type="cat")
    
    print(perry)
    # Output: Animal(name='perry', age=31, type='cat')
    
    print(perry.name)
    # Output: 'perry'
    
    perry.age=40
    # Output: Traceback (most recent call last):
    #            File "", line 1, in
    #         AttributeError: can't set attribute
    
  • 相关阅读:
    mysql中bigint、int、mediumint、smallint 和 tinyint的取值范围
    centos6.5下安装samba服务器与配置
    centos 6.5 安装图形界面【转】
    Linux 下添加用户,修改权限
    Linux下自动调整时间和时区与Internet时间同步
    C#下利用封包、拆包原理解决Socket粘包、半包问题(新手篇)
    Unity脚步之NetworkBehaviour下前进、后退、左右转向的简单移动
    Token 在 Ajax 请求头中,服务端过滤器跨域问题
    【游戏】【暗黑2】重置属性点和技能点
    ASCII
  • 原文地址:https://www.cnblogs.com/bradleon/p/6109597.html
Copyright © 2011-2022 走看看