zoukankan      html  css  js  c++  java
  • Python3-collections模块-容器数据类型

    Python3中的collections模块实现了一些专业的容器数据类型

      最常用的容器数据类型 字典、列表和元组、集合都已经被Python默认导入,但在实现一些特定的业务时,collections模块中的容器数据类型则显得更为专业,如:

        collections.Counter

          计数器类型,dict的子类,一般用于统计一个序列类型中可哈希的元素的个数

    # 必须要导入collections模块
    import collections
    
    ct = collections.Counter("Hello,World!")
    print(ct)         # 输出结果: Counter({'l': 3, 'o': 2, 'H': 1, 'e': 1, ',': 1, 'W': 1, 'r': 1, 'd': 1, '!': 1})
    print(ct["l"])    # 输出结果: 3
    Counter

        collections.OrderDict

          有序字典与常规字典相似,dict的子类,它会记住键值对插入的顺序

    # 必须要导入collections模块
    import collections
    
    # 和字典差不多,只不过是有顺序的
    od = collections.OrderedDict()
    od["k1"] = "v1"
    od["k2"] = "v2"
    od["k3"] = "v3"
    # 把某个键值对移动到最后
    od.move_to_end("k1")
    print(od)        # 输出结果: OrderedDict([('k2', 'v2'), ('k3', 'v3'), ('k1', 'v1')])
    OrderDict

        collections.defaultdict

          这个类和字典dic基本一致,只是调用了一个工厂函数来给字典中的value提供一个指定类型的默认值

    # 必须要导入collections模块
    import collections
    
    
    dd = collections.defaultdict(lambda: "默认值")
    print(dd["k1"])    # 输出结果: 默认值
    defaultdict

        collections.namedtuple

          这是调用了一个工厂方法,相当于比较快捷的创建了一个元组类,而访问这个元组中的元素不是通过下标,而是通过属性名

    # 必须要导入collections模块
    import collections
    
    Coordinate = collections.namedtuple("Coordinate", ["x", "y"])
    newyork = Coordinate(-77.02, 39.91)
    # 可以使用上面定义的字段名称来轻松访问元组中的值,多用于坐标之类的东西
    print(newyork.x)    # 输出结果: -77.02
    print(newyork.y)    # 输出结果: 39.91
    namedtuple

        collections.deque

          双向队列

    # 必须要导入collections模块
    import collections
    
    # 双向队列和list差不多
    dq = collections.deque([1, 2, 3, 4, 5, ])
    # 向队列的右边加一个元素
    dq.append(6)
    # 向队列的左边加一个元素
    dq.appendleft(0)
    # 删除并获取最后一个元素
    print(dq.pop())         # 输出结果: 6
    # 删除并获取第一个元素
    print(dq.popleft())     # 输出结果: 0
    print(dq)               # 输出结果: deque([1, 2, 3, 4, 5])
    deque
  • 相关阅读:
    串口RS232和485通信的波形分析
    Ubuntu添加中文输入法
    虚拟机桥接模式联网方法,Xshell的连接与使用
    waitpid 函数详解
    linux for循环 fork() 产生子进程
    【LeetCode解题总结】动态规划篇
    【LeetCode解题总结】递归篇
    【LeetCode解题总结】排序篇
    【LeetCode解题总结】树/图篇
    【LeetCode解题总结】栈/队列篇
  • 原文地址:https://www.cnblogs.com/qq1207501666/p/6548648.html
Copyright © 2011-2022 走看看