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

    一、模块简介

    在内置数据类型(dict、list、set、tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter、deque、defaultdict、namedtuple和OrderedDict等。
    
    1.namedtuple: 生成可以使用名字来访问元素内容的tuple
    
    2.deque: 双端队列,可以快速的从另外一侧追加和推出对象
    
    3.Counter: 计数器,主要用来计数
    
    4.OrderedDict: 有序字典
    
    5.defaultdict: 带有默认值的字典

    二、模块主要功能

    1.namedtuple: 生成可以使用名字来访问元素内容的tuple

    1 from collections import namedtuple
    2 Tup = namedtuple('name','x,y')
    3 t1 = Tup(1,2)
    4 print(t1)           # name(x=1, y=2)
    5 print(t1.x)         # 1
    6 print(t1.y)         # 2
    
    

    注意:(queue不是collections模块里的,在deque之前我们先来看一下queue)
    queue: 队列,里面可以存着好多值,只能往里面放值或者往外拿出,不能修改不能查看,而且先拿出的一定是最先放进去的

     1 import queue
     2 
     3 q = queue.Queue()
     4 q.put(10)
     5 q.put(5)
     6 q.put(6)
     7 
     8 print(q.get())
     9 print(q.get())
    10 print(q.get())


    2.deque: 双端队列,可以快速的从另外一侧追加和推出对象

    1 from collections import deque
    2 q = deque()
    3 q.append(1)#从后端插入值
    4 q.appendleft(2)#从前面插入值
    5 q.insert(1,4) #在指定索引位置插入值
    6 q.pop()#从后往前取值
    7 q.popleft()#从前面取值

    3.OrderedDict: 有序字典

    python中常规字典是无序的,每次查看位置都会不一样,而如果需要创建一个有序的字典就要用OrderedDict了。
    需要注意的是,OrderedDict虽然有序,但是也不能通过下标索引来找到元素

    1 from collections import OrderedDict
    2 dic = OrderedDict([('k1',1),('k2',2),('k3',3)])
    3 print(dic)  #OrderedDict([('k1', 1), ('k2', 2), ('k3', 3)])
    4 print(dic['k2']) #2
    5 for i in dic:
    6     print(i)
    7 # k1
    8 # k2
    9 # k3

    4.defaultdict: 带有默认值的字典

    可以为字典指定一个默认值,默认值可以是列表,字典等一切可以被调用的对象

    1 from collections import defaultdict
    2 dic1 = defaultdict(list) #创建一个字典,每个键所对应的值都是一个列表
    3 print(dic1['k1'])
    4 dic2 = defaultdict(dict) #创建一个字典,每个键所对应的值都是一个字典
    5 print(dic2['k1'])
    6 dic3 = defaultdict(lambda:5) #创建一个字典,每个键所对应的值都是5 (不能直接写5,因为括号内是能被调用的)
    7 print(dic2['k1'])

    三、应用实例

    # 有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
    # 即: {'k1': 大于66 , 'k2': 小于66}

    1 from collections import defaultdict
    2 l = [11,22,33,44,55,66,77,88,99,90]
    3 dic = defaultdict(list)
    4 for i in l:
    5     if i>66:
    6         dic['k1'].append(i)
    7     elif i<66:
    8         dic['k2'].append(i)
    9 print(dic)  #defaultdict(<class 'list'>, {'k1': [77, 88, 99, 90], 'k2': [11, 22, 33, 44, 55]})
  • 相关阅读:
    SVN更新及如何解决冲突文件
    Eclipse如何删除多建的Tomcat服务器
    linux查看硬件配置命令
    【项目经验】navicat工具 SQLServer数据库迁移MySQL
    Oracle 中的 时间运算
    1001 数组中和等于K的数对
    1004 n^n的末位数字
    1182 完美字符串
    1283 最小周长
    1284 2 3 5 7的倍数
  • 原文地址:https://www.cnblogs.com/fu-yong/p/8259243.html
Copyright © 2011-2022 走看看