zoukankan      html  css  js  c++  java
  • python内置模块之collections(六)

    前言

    collections是Python内建的一个集合模块,提供了许多有用的集合类。

    系列文章

    OrderedDict

    • 有序字典,相当于键值对列表;按照创建时的顺序保持不变。

    • 方法:继承了dict结构,有其父类的所有的方法。

    import collections
    dt = {'a':1,'b':2,'c':3}
    o_dict = collections.OrderedDict(dt)
    # 通用方法
    print(o_dict.keys()) # 返回字典所有的键顺序列表
    print(o_dict.items()) # 返回字典键值对元组组成的列表
    print(o_dict.values()) # 返回字典所有的值组成的列表
    print(o_dict.get('a')) # 返回以键查找的值,没有返回None
    print(o_dict.pop('a')) # 以键弹出一个键值对
    print(o_dict.clear()) # 清空字典,返回None
    print(o_dict.copy()) # 复制一个新的字典
    print(o_dict.update({'a':2})) # 更新字典,没有添加新的,有就更新
    print(o_dict.setdefault('h', 9)) # 获取一个键的值,如果没有用默认值替代同时加入到字典,有直接返回值
    print(o_dict.fromkeys(['a', 'f', 'g'], value=10))  # 创建一个值相同的字典,和原来的字典无关,类方法
    # 特殊方法
    print(o_dict.popitem(last=True)) # 以元组的方式从右端弹出键值对,last=False从左边弹出
    print(o_dict.move_to_end('a', last=True)) # 将一个键值对移到字典的末尾
    

    defaultdict

    import collections
    dt = {'a':1,'b':2,'c':3}
    # 可接受一个数据类型或无参数函数作为初始化
    o_dict = collections.defaultdict(list)
    o_dict1 = collections.defaultdict(lambda :10)
    print(o_dict)
    print(o_dict['a'].append(1)) # 默认所有的值都是列表
    print(o_dict.get('a')) # 如果键存在,默认值为10
    print(o_dict1)
    

    namedtuple

    namedtuple是一个函数,它用来创建一个自定义的tuple对象,并且规定了tuple元素的个数,并可以用属性而不是索引来引用tuple的某个元素。

    import collections
    # 返回一个tuple类型,可以通过自定义的属性访问而不是索引
    User = collections.namedtuple('User', ['age','name'])
    user = User(19,'xiaoming')
    print(user.name)
    print(user.age)
    

    deque

    • 双向列表,可以看做一个简单的队列,可以高效地插入和删除数据。支持列表形式的索引取值,不支持切片。
    import collections
    l = ['a', 'b', 'c']
    dq = collections.deque(l)
    print(dq.append('c')) # 从右边插入
    print(dq.appendleft('c')) # 从左边插入
    print(dq.pop()) # 从右边弹出
    print(dq.popleft()) # 从左边弹出
    print(dq.rotate(3)) # 当参数为正,从右边数n个移到左边;参数为负数时,从左边移动
    

    Counter

    • 一个简单的计数器,统计元素出现的次数,本质也是一个字典。该方法支持各种对字符串的统计;支持加减和交并运算.
    import collections
    l = 'ffdsgdfgasfsghdgdaf'
    c = collections.Counter(l) # 直接生成以字符为键,个数为值的字典,值必须为int
    print(c.most_common(3)) # 输出排名前3的元组列表
    print(list(c.elements())) # 输出字符列表,从多到少
    print(c.subtract('fsdfsfsf')) # 计算相减,得到相减后的字典
    print(c)
    

    ChainMap

    • 增删改的操作都只会针对该对象的第一个字典,其余字典不会发生改变,但是如果是查找,则会在多个字典中查找,直到找到第一个出现的key为止。
    import collections
    dt1 = {'a':1, 'b':2}
    dt2 = {'c':1, 'd':2}
    c = collections.ChainMap([dt1, dt2]) # 创建一个映射视图将多个字典合在一起
    # 特殊的方法
    print(c.maps) # 返回所有的字典列表
    # 在字典列表头部插入字典,如果其参数为空,则会默认插入一个空字典,并且返回一个改变后的ChainMap对象
    print(c.new_child({'a':1}))
    
    • 作者:天宇之游
    • 出处:http://www.cnblogs.com/cwp-bg/
    • 本文版权归作者和博客园共有,欢迎转载、交流,但未经作者同意必须保留此段声明,且在文章明显位置给出原文链接。
  • 相关阅读:
    The Lobo Project: Home of Lobo (Java Web Browser) and Cobra (HTML Rendering Engine)
    基于DOM树的网页相似度研究与应用《大连理工大学》2011年硕士论文
    学习用 c/c++写crawler
    终于用上gcc4.1编译的系统了
    Android 查找SDCard 下面的文件 函数
    对HTML5 Device API相关规范的解惑
    Windows Phone开发(14):数据模板
    Windows Phone开发(13):如何规范用户的输入行为
    InputScope的62个值
    转:Windows Phone 7 设计简介
  • 原文地址:https://www.cnblogs.com/cwp-bg/p/9524469.html
Copyright © 2011-2022 走看看