Python_Day_05 计数器(counter),有序字典(OrderDict),默认字典(defaultdict),可命名元祖(namedtuple),双向队列(deque),单项队列(deuqe.Queue)

 

  Counter(计数器)

是一个字典的子类,存储形式同样为字典,其中存储的键为字典的元素,值为元素出现的次数,在使用之前我们需要先导入文件 import collections

  • 初始化一个计数器
  1. import collections
  2.  
  3. # 初始化一个计数器
  4. c = collections.Counter('sldfjoaoaufdlfuaof')
  5. print(c) # Counter({'f': 4, 'o': 3, 'a': 3, 'd': 2, 'u': 2, 'l': 2, 'j': 1, 's': 1})
  • most_common(self,n) 取出元素最多的前n项
  1. import collections
  2.  
  3. # most_common(self,n) 取出计数器总元素最多的前n项
  4. c = collections.Counter('sldfjoaoaufdlfuaof')
  5. d = c.most_common(3)
  6. print(d) # [('f', 4), ('a', 3), ('o', 3)]
  • sorted(c) 给计数器排序
  1. import collections
  2.  
  3. # sorted(c) 给计数器排序
  4. c = collections.Counter('sldfjoaoaufdlfuaof')
  5. print(sorted(c)) # ['a', 'd', 'f', 'j', 'l', 'o', 's', 'u']
  • ''.join(sorted(c.elements())) 排序,打印成字符串形式
  • elements(c) 计数器所有元素
  1. import collections
  2.  
  3. # ''.join(sorted(c.elements())) 相当于排序,打印成字符串
  4. # c.elements() 返回所有元素
  5. c = collections.Counter('sldfjoaoaufdlfuaof')
  6. e = ''.join(c)
  7. print(e) # ldfjosau
  8. f = ''.join(sorted(c.elements()))
  9. print(f) # aaaddffffjllooosuu
  • sum(*args, **kwargs) 增加
  • sum(c.values()) c字典所有元素个数
  1. import collections
  2. # sum(c.values()) 所有值个数
  3. c = collections.Counter('sldfjoaoaufdlfuaof')
  4. g = sum(c.values())
  5. print(g) # 18
  • c['a'] c字典中a元素出现次数
  1. import collections
  2.  
  3. # c['a'] 字符a出现的次数
  4. c = collections.Counter('sldfjoaoaufdlfuaof')
  5. r = c['a']
  6. print(r) # 3
  7.  
  8. for elem in 'shazam':
  9. c[elem] += 1
  10. d = c['a']
  11. print(d) # 5
  12. del c['a']
  13. print(c) # Counter({'f': 4, 'o': 3, 'l': 2, 'u': 2, 's': 2, 'd': 2, 'z': 1, 'm': 1, 'h': 1, 'j': 1})
  • update(*args, **kwds) 更新计数器
  1. import collections
  2. # update 更新计数器
  3. c = collections.Counter('sldfjoaoaufdlfuaof')
  4. d = collections.Counter('aaaaasimsalabim')
  5. c.update(d)
  6. print(c['a']) # 10
  • clear(self) 清除所有参数
  1. import collections
  2.  
  3. # clear()
  4. c = collections.Counter('sldfjoaoaufdlfuaof')
  5. c.clear()
  6. print(c) # Counter()
  • subtract(*args, **kwds) 删除与另一个交集后的子集
  1. import collections
  2.  
  3. # subtract(*args, **kwds):删除与另一个计数器的交集
  4. c = collections.Counter('which')
  5. c.subtract('witch')
  6. print(c) # Counter({'h': 1, 'w': 0, 'c': 0, 'i': 0, 't': -1})

  

  OrderDict(有序字典)

  OrderedDict 有序字典,是对字典的补充,他能记录字典的添加顺序,相当于字典和列表的组合,使用之前需要导入依赖类 import collections

  • 初始化一个有序字典
  1. import collections
  2.  
  3. # 初始化一个有序字典
  4. order = collections.OrderedDict()
  5. print(order) # OrderedDict()
  6. order['k1'] = 'v1'
  7. order['k2'] = 'v2'
  8. order['k3'] = 'v3'
  9. print(order) # OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')])
  • fromkeys(cls, S, v=None) s:定义一个键列表,用于字典的键准备准备的值的列表, v:表示将键设置的值 默认是None
  1. import collections
  2.  
  3. # 初始化一个有序字典
  4. order = collections.OrderedDict()
  5. print(order) # OrderedDict()
  6. order['k1'] = 'v1'
  7. order['k2'] = 'v2'
  8. order['k3'] = 'v3'
  9. print(order) # OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')])
  10.  
  11. # fromkeys(cls, S, v=None) s:定义一个键列表,用于字典的键准备准备的值的列表, v:表示将键设置的值 默认是None
  12. s = ['v1','k2','43']
  13. order1 = order.fromkeys(s,'Hello')
  14. print(order1) # OrderedDict([('k1', 'Hello'), ('k2', 'Hello'), ('k3', 'Hello')])
  • items(self, *args, **kwargs) 所有的元素
  1. import collections
  2.  
  3. # 初始化一个有序字典
  4. order = collections.OrderedDict()
  5. print(order) # OrderedDict()
  6. order['k1'] = 'v1'
  7. order['k2'] = 'v2'
  8. order['k3'] = 'v3'
  9. print(order) # OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')])
  10.  
  11. # items(self, *args, **kwargs) 所有的元素
  12. order2 = order.items()
  13. print(order2) # odict_items([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')]
  • keys(self, *args, **kwargs)  所有的key
  1. import collections
  2.  
  3. # 初始化一个有序字典
  4. order = collections.OrderedDict()
  5. print(order) # OrderedDict()
  6. order['k1'] = 'v1'
  7. order['k2'] = 'v2'
  8. order['k3'] = 'v3'
  9. print(order) # OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')])
  10.  
  11. # keys(self, *args, **kwargs) 所有的key
  12. order3 = order.keys()
  13. print(order3) # odict_keys(['k1', 'k2', 'k3'])
  • move_to_end(self, *args, **kwargs) 将指定元素移动到最后,如果指定元素不存在就会报错
  1. import collections
  2.  
  3. # 初始化一个有序字典
  4. order = collections.OrderedDict()
  5. print(order) # OrderedDict()
  6. order['k1'] = 'v1'
  7. order['k2'] = 'v2'
  8. order['k3'] = 'v3'
  9. print(order) # OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')])
  10.  
  11. # move_to_end(self, *args, **kwargs) 将指定元素移动到最后,如果指定元素不存在就会报错
  12. order.move_to_end('k1')
  13. print(order) # OrderedDict([('k2', 'v2'), ('k3', 'v3'), ('k1', 'v1')])
  • pop(self, k, d=None)  弹出指定元素,同时可以接受弹出元素的值
  1. import collections
  2.  
  3. # 初始化一个有序字典
  4. order = collections.OrderedDict()
  5. print(order) # OrderedDict()
  6. order['k1'] = 'v1'
  7. order['k2'] = 'v2'
  8. order['k3'] = 'v3'
  9. print(order) # OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')])
  10.  
  11. # pop(self, k, d=None) 弹出指定元素,同时可以接受弹出元素的值
  12. order4 = order.pop('k2')
  13. print(order4) # v2
  14. print(order) # OrderedDict([('k3', 'v3'), ('k1', 'v1')])
  • popitem(self)  弹出字典中键值对,可以定义一个变量用来接收弹出的建制度,貌似弹出的建制度不是按照顺序弹出来的
  1. # 初始化一个有序字典
  2. order = collections.OrderedDict()
  3. print(order) # OrderedDict()
  4. order['k1'] = 'v1'
  5. order['k2'] = 'v2'
  6. order['k3'] = 'v3'
  7. print(order) # OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')])
  8.  
  9. # popitem(self) 弹出字典中键值对,可以定义一个变量用来接收弹出的建制度,貌似弹出的建制度不是按照顺序弹出来的
  10. order5 = order.popitem()
  11. print(order) # OrderedDict([('k3', 'v3')])
  12. print(order5) # ('k1', 'v1')
  • setdefault(self, k, d=None)  用来查找字典中键,如果字典中不存在key就默认为d
  1. import collections
  2. order_default = collections.OrderedDict()
  3. order_default['k100'] = '034'
  4. order_default.setdefault('k1',['hello','Python'])
  5. print(order_default['k1']) # ['hello', 'Python']
  6. print(order_default['k100']) # 034
  • update(self, *args, **kwargs)  更新
  1. import collections
  2. order = collections.OrderedDict()
  3. order['k1'] = 'v1'
  4. order['k2'] = 'v2'
  5. order['k3'] = 'v3'
  6. order_default.update(order)
  7. print(order_default) # OrderedDict([('k100', '034'), ('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')])
  • values(self, *args, **kwargs)  所有的值
  1. import collections
  2.  
  3. order = collections.OrderedDict()
  4. order['k1'] = 'v1'
  5. order['k2'] = 'v2'
  6. order['k3'] = 'v3'
  7. order_default.update(order)
  8. print(order_default) # OrderedDict([('k100', '034'), ('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')])
  9.  
  10. # values(self, *args, **kwargs) 所有的值
  11. print(order_default.values()) # odict_values(['034', 'v1', 'v2', 'v3'])
  • defalultdict(默认字典)
  1. # 默认字典 defaultdict 表示其值默认为一个类型
  2. my_defaulf = collections.defaultdict(list)
  3. my_defaulf['k1'].append('v1')
  4. print(my_defaulf) # defaultdict(<class 'list'>, {'k1': ['v1']})
  • namedtuple(可命名元祖)
  1. # 可命名元祖 ,可命名元祖是属于collections类
  2. Mytuple = collections.namedtuple('Mytuple',['name', 'age', 'email'])
  3. f = Mytuple('wang','12','wang@163.com')
  4. print(f.name) # wang
  5. print(f.age) # 12
  6. print(f.email) # wang@163.com
  • deque(双向队列)

  双向队列,相当于一个列表,可以从队列的两端来操作,同样在使用之前我们需要先导入  import collections

  • 初始化
  1. init_deque = collections.deque()
  2. print(init_deque) # deque([])
  • append(self, *args, **kwargs) 添加元素
  1. import collections
  2.  
  3. init_deque = collections.deque()
  4. print(init_deque) # deque([])
  5.  
  6. # append(self, *args, **kwargs) 添加元素
  7. init_deque.append('sdfasd')
  8. print(init_deque) # deque(['sdfasd']) 一次只能添加一个元素
  9. init_deque.append(1)
  10. init_deque.append(2)
  11. init_deque.append(3)
  12. print(init_deque) # deque(['sdfasd', 1, 2, 3]) 默认是向后添加元素
  • appendleft(self, *args, **kwargs) 想左添加元素
  1. init_deque.appendleft(4)
  2. print(init_deque) # deque([4, 'sdfasd', 1, 2, 3])
  • clear(self, *args, **kwargs) 清除
  • copy(self, *args, **kwargs) 拷贝
  • count(self, value) 计算指定值(value)的个数
  1. init_count = init_deque.count(4)
  2. print(init_deque) # deque([4, 'sdfasd', 1, 2, 3])
  3. print(init_count) # 1
  • extend(self, *args, **kwargs) 在右边扩展,同时会将传入的参数拆分成元素来添加
  1. init_deque.extend('100')
  2. print(init_deque) # deque([4, 'sdfasd', 1, 2, 3, '1', '0', '0'])
  • extendleft(self, *args, **kwargs) 会将传入的参数拆分成元素来添加到左边,完全倒序,最右边的元素添加到最左边
  1. init_deque.extendleft('789')
  2. print(init_deque) # deque(['9', '8', '7', 4, 'sdfasd', 1, 2, 3, '1', '0', '0'])
  • index(self, value, start=None, stop=None) 指定值在指定范围内的下标 默认是整个队列
  1. init_index = init_deque.index(1)
  2. print(init_index) # 5
  • insert(self, index, p_object)  在指定下标插入指定元素
  1. init_deque.insert(5,'567')
  2. print(init_deque) # deque(['9', '8', '7', 4, 'sdfasd', '567', 1, 2, 3, '1', '0', '0'])
  • pop(self, *args, **kwargs)  从右边弹出一个元素 同时可以接收弹出的元素
  1. print(init_deque) # deque(['9', '8', '7', 4, 'sdfasd', '567', 1, 2, 3, '1', '0', '0'])
  2. init_pop = init_deque.pop()
  3. print(init_deque) # deque(['9', '8', '7', 4, 'sdfasd', '567', 1, 2, 3, '1', '0'])
  4. print(init_pop) # 0
  • popleft(self, *args, **kwargs)  弹出最左边的元素
  1. print(init_deque) # deque(['9', '8', '7', 4, 'sdfasd', '567', 1, 2, 3, '1', '0'])
  2. init_popleft = init_deque.popleft()
  3. print(init_deque) # deque(['8', '7', 4, 'sdfasd', '567', 1, 2, 3, '1', '0'])
  4. print(init_popleft) # 9
  • remove(self, value)  移除在队列中出现的第一个指定的值
  1. print(init_deque) # deque(['8', '7', 4, 'sdfasd', '567', 1, 2, 3, '1', '0'])
  2. init_deque.remove(1)
  3. print(init_deque) # deque(['8', '7', 4, 'sdfasd', '567', 2, 3, '1', '0'])
  • reverse(self)  队列反向排序
  1. print(init_deque) # deque(['8', '7', 4, 'sdfasd', '567', 2, 3, '1', '0'])
  2. init_deque.reverse()
  3. print(init_deque) # deque(['0', '1', 3, 2, '567', 'sdfasd', 4, '7', '8'])
  • rotate(self, *args, **kwargs)  将指定元素向前移动n个位置,如果n没有设置就默认移动到左边一个位置,但是n怎么设置还没搞定
  1. print(init_deque) # deque(['0', '1', 3, 2, '567', 'sdfasd', 4, '7', '8'])
  2. init_deque.rotate('567')
  3. print(init_deque) # deque(['0', '1', 3, 2, '567', 'sdfasd', 4, '7', '8'])
  • Queue(单项队列)

  单项队列,只能在一个方向上操作,先进先出策略,使用时导入 import queue

  • 初始化
  1. import queue
  2.  
  3. # 单项队列,只能在一个方向上操作,先进先出原则
  4. init_queue = queue.Queue()
  5. print(init_queue) # <queue.Queue object at 0x101379128> 怎么好像是内存地址呢
  • put(self, item, block=True, timeout=None) 向队列添加元素
  1. init_queue.put('a')
  2. print(init_queue) # <queue.Queue object at 0x101b79748>
  3. init_queue.put('b')
  4. init_queue.put('c')
  • qsize(self)  队列总元素个数
  1. # qsize(self) 队列总元素个数
  2. print(init_queue.qsize()) # 3
  • empty(self)  如果返回时Ture 说明是空,其他情况是False,不确定一定有元素
  1. # empty(self) 如果返回时Ture 说明是空,其他情况是False,不确定一定有元素
  2. init_empty = init_queue.empty()
  3. print(init_empty) # False
  • get(self, block=True, timeout=None)  往外拿元素,相当于remove
  1. # get(self, block=True, timeout=None) 往外拿元素,相当于remove
  2. init_geta = init_queue.get()
  3. print(init_geta) # a
  4. print(init_queue.qsize()) # 2
  • init_queue_max = queue.Queue(maxsize=3)  最多存放元素个数为3个,多余的put进去的都会处于等待状态

计数器(counter),有序字典(OrderDict),默认字典(defaultdict),可命名元祖(namedtuple),双向队列(deque),单项队列(deuqe.Queue)的更多相关文章

  1. Python_Day_05 计数器(counter),有序字典(OrderDict),默认字典(defaultdict),可命名元祖(namedtuple),双向队列(deque),单项队列(deuqe.Queue)

    Counter(计数器) 是一个字典的子类,存储形式同样为字典,其中存储的键为字典的元素,值为元素出现的次数,在使用之前我们需要先导入文件 import collections 初始化一个计数器 im ...

  2. python基础知识4——collection类——计数器,有序字典,默认字典,可命名元组,双向队列

    1.计数器(counter) Counter是对字典类型的补充,用于追踪值的出现次数. ps:具备字典的所有功能 + 自己的功能  Counter 我们从中挑选一些相对常用的方法来举例: 在上面的例子 ...

  3. 八、collection系列-----计数器、有序字典、默认字典、可命名元组、双向队列、单向队列一.计数器(对字典的扩展)

    一.计数器(对字典的扩展) 有如下一个字典: dic = {'k1':123,'k2':123,'k3':12} 统计12出现的次数,123出现的次数   1.统计出现次数 >>> ...

  4. Python说文解字_看起来有点儿像字典的元组(命名元祖)

    1. 需要一个库 namedtuple: 所谓命名元组就是对于元组的每一个元素进行起名,看起来很像访问字典一样. 实例 from collections import namedtuple Stock ...

  5. Python学习笔记——基础篇2【第三周】——计数器、有序字典、元组、单(双)向队列、深浅拷贝、函数、装饰器

    目录 1.Python计数器Counter 2.Python有序字典OrderredDict 3.Python默认字典default 4.python可命名元组namedtuple 5.Python双 ...

  6. 学习python的第十天(内置算法:列表数据类型,元祖数据类型,字典数据类型)

    5.8自我总结 1.列表类型内置算法 1.必须掌握 1.按索引取值(正向取值+反向取值),即可存也可以取 #用于取其中一个值 name = ['yang','wen','yi'] ##正方向取wen, ...

  7. Python字符串/元祖/列表/字典互转

    #-*- coding:UTF-8 -*- #author:RXS002 #1.字典 dict = {'name':'Zara','age':7,'class':'First'} #字典转换为字符串, ...

  8. list tuple dict (列表,元祖,字典间的相互转换)

    #-*- coding:UTF-8 -*- #author:RXS002 #1.字典 dict = {'name':'Zara','age':7,'class':'First'} #字典转换为字符串, ...

  9. python-Day3-set 集合-counter计数器-默认字典(defaultdict) -可命名元组(namedtuple)-有序字典(orderedDict)-双向队列(deque)--Queue单项队列--深浅拷贝---函数参数

    上节内容回顾:C语言为什么比起他语言块,因为C 会把代码变异成机器码Pyhton 的 .pyc文件是什么python 把.py文件编译成的.pyc文件是Python的字节码, 字符串本质是 字符数组, ...

随机推荐

  1. ORACLE临时表总结

    临时表概念 临时表就是用来暂时保存临时数据(亦或叫中间数据)的一个数据库对象,它和普通表有些类似,然而又有很大区别.它只能存储在临时表空间,而非用户的表空间.ORACLE临时表是会话或事务级别的,只对 ...

  2. 特定IP访问远程桌面

    1. 新建IP安全策略 (远程端口没有修改情况下的设置) WIN+R打开运行对话框,输入“gpedit.msc”进入组策略编辑器. 依次打开:本地计算机策略--计算机配置--Windows设置--安全 ...

  3. js Ajax跨域调用JSON并赋值全局变量

    //跨域调用JSON <script type="text/javascript"> function _callback(obj) { alert(obj); } j ...

  4. 不同版本SQL SERVER备份还原时造成索引被禁用

    以下测试例子以SQL 2008备份,在SQL2014还原,造成索引被禁用. --备份环境(SQL Server 2008 R2) /* MicrosoftSQL Server 2008 R2 (RTM ...

  5. 网页实时聊天之PHP实现websocket

    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...

  6. star ccm+ 11.02安装

    STAR CCM+是CD-Adapco公司的主打软件,其安装方式较为简单,这里以图文方式详细描述STAR CCM+11.02安装过程. 1 安装准备工作2 正式安装3 软件破解4 软件测试 1 安装准 ...

  7. android 学习中的一些问题记录 主要是概念问题

    一些问题记录 应用程序 res 目录常见的目录有哪些,分别放置什么类型的资源? animator/ 和anim/ 放的都是定义动画的XML文件,两个地方的动画类型不同. color/ XML文件:定义 ...

  8. [WPF系列]-TreeView的常用事项

    引言 项目经常会用Treeview来组织一些具有层级结构的数据,本节就将项目使用Treeview常见的问题作一个总结. DataBinding数据绑定 DataTemplate自定义 <Hier ...

  9. C++11 新特性: unordered_map 与 map 的对比

    unordered_map和map类似,都是存储的key-value的值,可以通过key快速索引到value.不同的是unordered_map不会根据key的大小进行排序, 存储时是根据key的ha ...

  10. JSP前三章测试改错

    分析:文件.数据库都是持久化保存数据的,所以是正确的,而servletcontext是上下文对象当然也可以.所以正确答案为A 分析: A:判断学员是否手动安装过Tomcat(练习熟练度) B:使学员了 ...