python模块学习(collections模块)
2017-11-16 13:00
471 查看
学习版本3.5.2
1.namedtuple,是tuple的子类,字面意思可命名的元组,就是用来创建一个给各个元素都加上了key的tuple。#/usr/bin/python3 # -*- utf-8 -*- #学习版本3.5.2 import collections if __name__ == "__main__": a = (1,2,3) newtuple = collections.namedtuple('newtuple',['a','b','c']) b = newtuple(1,2,3) print("a:",a) print("a[0]:",a[0]) print("="*20) print("b:",b) print("b[0]:",b[0]) print("b.a:",b.a)
运行结果
a: (1, 2, 3) a[0]: 1 ==================== b: newtuple(a=1, b=2, c=3) b[0]: 1 b.a: 1
2.deque,是双端队列,类似list,但是它能在两端都快速的进行append和pop操作。
#/usr/bin/python3 # -*- utf-8 -*- #学习版本3.5.2 import collections if __name__ == "__main__": que = collections.deque([1,2,3]) #用list初始化que que.append(2)#在右侧插入2 que.appendleft(3)#在左侧插入3 print(que.count(2))#返回等于2的元素的数量 que.extend(['a','b'])#把list里的元素一个一个插入到右侧 que.extendleft(['c','d'])#把list里的元素一个一个插入到左侧 print(que.index(2))#返回等于2的第一个位置 que.insert(5,'g')#在5位置插入'g' que.pop()#删除右侧的第一个元素 que.popleft()#删除左侧的第一个元素 que.remove(2)#删除第一个等于2的元素 que.reverse()#把que左右顺序颠倒 que.rotate(3)#把que右侧的3个元素放到左侧 que.clear()#清空que
3.ChainMap,map链,将dict放到一起来方便查询
#/usr/bin/python3 # -*- utf-8 -*- #学习版本3.5.2 import collections if __name__ == "__main__": dict1 = {'a':1,'b':2} dict2 = {'c':3,'d':4} #用dict1和dict2初始化chainmap chainmap = collections.ChainMap(dict1, dict2) print(chainmap) #获得key为a的value print(chainmap.get('a')) #获得一个新的chainmap并在左侧加上{'e',5} chainmap = chainmap.new_child({'e':5}) print(chainmap) #chainmao.parents相当于去掉左侧的dict剩下的部分 #删除最左侧dict中key为a的元素 chainmap.parents.pop('a') print(chainmap) #删除最左侧dict中的第一个元素 chainmap.parents.parents.popitem() print(chainmap)
运行结果
ChainMap({'b': 2, 'a': 1}, {'c': 3, 'd': 4}) 1 ChainMap({'e': 5}, {'b': 2, 'a': 1}, {'c': 3, 'd': 4}) ChainMap({'e': 5}, {'b': 2}, {'c': 3, 'd': 4}) ChainMap({' b4aa e': 5}, {'b': 2}, {'d': 4})
4.Counter,继承了dict类,统计传入的序列中每一个元素出现的次数。
#/usr/bin/python3 # -*- utf-8 -*- #学习版本3.5.2 import collections if __name__ == "__main__": #用字符串初始化一个counter counter = collections.Counter("aababcabcd") print(counter) #most_common(n)列出counter中最常见的几个元素,参数为None时候列出所有元素 print(counter.most_common(2)) #update(...)添加元素 counter.update('e') print(counter) counter.update('a') print(counter) #subtract(...)减少元素 counter.subtract('e') print(counter) counter.subtract('e') print(counter) #counter支持+(加号)、-(减号)、&、|、+=、-=、&=、|=、+(正号)、-(负号) #+(正号)将counter中的次数为0和负的去掉了 #-(负号)将counter中次数为0和正的去掉然后把负的全部变为正的 print(-counter) print(+counter)
运行结果
Counter({'a': 4, 'b': 3, 'c': 2, 'd': 1}) [('a', 4), ('b', 3)] Counter({'a': 4, 'b': 3, 'c': 2, 'd': 1, 'e': 1}) Counter({'a': 5, 'b': 3, 'c': 2, 'd': 1, 'e': 1}) Counter({'a': 5, 'b': 3, 'c': 2, 'd': 1, 'e': 0}) Counter({'a': 5, 'b': 3, 'c': 2, 'd': 1, 'e': -1}) Counter({'e': 1}) Counter({'a': 5, 'b': 3, 'c': 2, 'd': 1})
5.OrderedDict,有序字典是dict的子类,对字典的元素进行了排序的字典
#/usr/bin/python3 # -*- utf-8 -*- #学习版本3.5.2 import collections if __name__ == "__main__": odict = collections.OrderedDict() odict['a'] = 1 odict['b'] = 2 odict['c'] = 3 print(odict) #items()返回键值对组成的列表 print(odict.items()) #keys()返回key组成的列表 print(odict.keys()) #values()返回value组成的列表 print(odict.values()) #move_to_end(key)把对应的key-value移到字典最后 odict.move_to_end('b') print(odict) #pop(key)获取对应的value并把该键值对从字典删除 print('b',odict.pop('b')) print(odict) #popitem()返回并删除最右边的元素 print(odict.popitem()) print(odict) #setdefault(key)返回对应key的value,如果key不存在则创建 print('d',odict.setdefault('d')) print(odict)
运行结果
OrderedDict([('a', 1), ('b', 2), ('c', 3)]) odict_items([('a', 1), ('b', 2), ('c', 3)]) odict_keys(['a', 'b', 'c']) odict_values([1, 2, 3]) OrderedDict([('a', 1), ('c', 3), ('b', 2)]) b 2 OrderedDict([('a', 1), ('c', 3)]) ('c', 3) OrderedDict([('a', 1)]) d None OrderedDict([('a', 1), ('d', None)])
6.defaultdict,默认字典,将字典的value设置成默认值
#/usr/bin/python3 # -*- utf-8 -*- #学习版本3.5.2 import collections if __name__ == "__main__": #用list初始化defaultdict ddict = collections.defaultdict(list) ddict['a'].append(1) ddict['a'].append(2) ddict['b'].append(3) print(ddict) #用dict初始化defaultdict ddict = collections.defaultdict(dict) ddict['a'].update({'a1':1}) ddict['a'].update({'b1':2}) ddict['b'].update({'c1':3}) print(ddict) #用collections.Counter初始化defaultdict ddict = collections.defaultdict(collections.Counter) ddict['a'].update('abc') ddict['a'].update('abcde') ddict['b'].update('abcd') print(ddict) #用lambda表达式初始化defaultdict ddict = collections.defaultdict(lambda: 1) ddict['a'] += 1 ddict['b'] += 2 print(ddict)
运行结果
defaultdict(<class 'list'>, {'a': [1, 2], 'b': [3]}) defaultdict(<class 'dict'>, {'a': {'b1': 2, 'a1': 1}, 'b': {'c1': 3}}) defaultdict(<class 'collections.Counter'>, {'a': Counter({'c': 2, 'a': 2, 'b': 2, 'd': 1, 'e': 1}), 'b': Counter({'d': 1, 'c': 1, 'a': 1, 'b': 1})}) defaultdict(<function <lambda> at 0x101a608c8>, {'a': 2, 'b': 3})
7.UserDict,UserList,UserString
这三个东西就是在对象的data变量里面拷贝了一份初始化的变量。。
这三的作用是让用户自己添加操作来对特定的数据进行管理
#/usr/bin/python3 # -*- utf-8 -*- #学习版本3.5.2 import collections if __name__ == "__main__": d = {'a':1,'b':2} myd = collections.UserDict(d) d.update({'c':3}) print(d) print(myd.data) l = [1,2] myl = collections.UserList(l) l.append(3) print(l) print(myl.data) s = 'abc' mys = collections.UserString(s) s = s + 'de' print(s) print(mys.data)
运行结果
{'c': 3, 'a': 1, 'b': 2} {'a': 1, 'b': 2} [1, 2, 3] [1, 2] abcde abc
相关文章推荐
- python学习十:copy模块、collections模块中的defaultdict、pydiction完成在vim中tab补全
- Python学习——struct模块的pack、unpack示例
- Python学习笔记之疑问 7:自定义模块放在什么位置
- python学习之logging模块
- Python学习:import已有模块
- Python 学习笔记 - 时间模块
- python模块学习---glob 文件路径查找
- Python2.7 学习笔记 (二)—— 函数,模块,正则
- Python模块学习——optparse
- Python furl模块的学习
- python标准库fileinput模块学习
- python学习-模块
- python模块学习---HTMLParser(解析HTML文档元素)
- python模块学习之__future__
- Python学习之常用模块
- python 各种模块学习
- Python模块学习:glob 文件路径查找
- Python的任务调度模块APScheduler学习1(基本认识)
- python学习八--导入模块