• python第三天---collections类


    collection系列

    1.计数器(counter)

    Counter是对字典类型的补充,用于追踪值的出现次数。

    我们从中挑选一些相对常用的方法来举例:

    在上面的例子我们可以看出,counter方法返回的是一个字典,它将字符串中出现的所有字符都进行了统计。在这里再介绍一下update方法,这个update方法是将两次统计的结果相加,和字典的update略有不同。

    2.有序字典(OrderedDict):

    orderdDict是对字典类型的补充,主要是可以按照字典元素添加顺序输出。

    普通字典:无序的,它依靠key,value之间的索引进行匹配。

     1 dict={                      
     2     '1':'test1',
     3     '2':'test2',
     4     '3':'test3',
     5     '4':'test4',
     6     '5':'test5',
     7     '6':'test6'
     8 }
     9 for k,v in dict.items():
    10     print k,v
    
    

    有序字典:字典在内部自动维护了一个key列表。

    import collections
    dict1=collections.OrderedDict()
    for lines in range(1,7):
        dict1[str(lines)]='test%s'%(lines)
    
    for k,v in dict1.items():
        print k,v

    3.默认字典(defaultdict)

     defaultdict是对字典的类型的补充,他默认给字典的值设置了一个类型。

    有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
    即: {'k1': 大于66 , 'k2': 小于66}
    常用方法:
    dic={}
    li=[11,22,33,44,55,66,77,88,99]
    for item in li:
        if item>66:
            if 'k2'in dic.keys():
                dic['k2'].append(item)
            else:
                dic['k2']=[item,]
    
         else:
            if 'k1' in dic.keys():
                dic['k1'].append(item)
            else:
                dic['k1']=[item

    用默认字典实现

    1 import collections
    2 value=[11,22,33,44,55,66,77,88,99]
    3 dict1=collections.defaultdict(list)
    4 for list1 in value:
    5     if list1<=66:
    6         dict1['k1'].append(list1)
    7     else:
    8         dict1['k2'].append(list1)
    9 print dict1

    4、可命名元组(namedtuple) 

    根据nametuple可以创建一个包含tuple所有功能以及其他功能的类型:

    主要用于‘坐标’的表示。用法如下:

    1 import collections as coll
    2 >>> mytuple=coll.namedtuple('mytuple',['x','y'])
    3 >>> n=mytuple(1,2)
    4 >>> n
    5 mytuple(x=1, y=2)
    6 >>> n.x
    7 1
    8 >>> n.y
    9 2

    5、双向队列(deque)

    一个线程安全的双向队列:双向队列我们可以理解为两个栈底相连的栈,和队列的先进先出不同,元素可以从这个队列的两端分别加入或者删除值。

    1 a=coll.deque()
    2 a.append(1)
    3 a.append(2)
    4 a.append(3)
    5 print a.pop()
    6 3
    7 print a.popleft()
    8 1
  • 相关阅读:
    1、应用设置之TAB页
    HDUOJ 水果
    Problem G 宝石合成 (内蒙古14年省赛)
    ORA-09925: Unable to create audit trail file汇总
    浅拷贝(在进行当中一个对象的运算时开辟新的空间)
    PHP图像操作类
    如何制作Jar包并在android中调用jar包
    android中正确导入第三方jar包
    Android 数据加密算法 Des,Base64详解
    Android Zip文件解压缩代码
  • 原文地址:https://www.cnblogs.com/chushiyaoyue/p/5027928.html
Copyright © 2020-2023  润新知