collection-系列

  cellection是作为字典、元组(列表与元组可互相转换)的扩充,在此需要导入cellection

一、计数器(counter)

  counter是对字典类型的补充,用户获取字典中元素出现的次数。它具备字典所有的功能以及自己自带的功能。

  

  

 import collections
stra = collections.Counter('asdfasdfasdfdgghjertgfgsa')
print(stra)
输出的结果是:
Counter({'a': 4, 'd': 4, 'g': 4, 'f': 4, 's': 4, 'e': 1, 'h': 1, 'j': 1, 'r': 1, 't': 1})
后面的数字表示的是出现的次数。

Counte

  most_common,出现最多  

  

 import collections
stra = collections.Counter('asdfasdfasdf[dggh]jertgfgsa')
print(stra)
ret = stra.most_common(4)
print(ret)
测试结果:
Counter({'a': 4, 'd': 4, 'g': 4, 'f': 4, 's': 4, 'e': 1, 'h': 1, 'j': 1, 'r': 1, 't': 1, '[': 1, ']': 1}) [('a', 4), ('d', 4), ('g', 4), ('f', 4)] 输出了排名前四的

most_common

   elements元素:  

  

 import collections
stra = collections.Counter('asdfasdfasdf[dggh]jertgfgsa')
for items in stra.elements():
print(items)
执行结果:
Counter({'a': 4, 'd': 4, 'g': 4, 'f': 4, 's': 4, 'e': 1, 'h': 1, 'j': 1, 'r': 1, 't': 1, '[': 1, ']': 1})
a
a
a
a
e
d
d
d
d
g
g
g
g
f
f
f
f
h
j
s
s
s
s
r
t
[
]
区别于:
import collections
stra = collections.Counter('asdfasdfasdf[dggh]jertgfgsa')
print (stra)
# for item in stra.elements():
# print(item)
for item in stra.items():
print(item)
执行结果:
Counter({'a': 4, 'd': 4, 'g': 4, 'f': 4, 's': 4, 'e': 1, 'h': 1, 'j': 1, 'r': 1, 't': 1, '[': 1, ']': 1})
('a', 4)
('e', 1)
('d', 4)
('g', 4)
('f', 4)
('h', 1)
('j', 1)
('s', 4)
('r', 1)
('t', 1)
('[', 1)
(']', 1)

  更新(增加删除)操作:  

  

 增加:
import collections
stra = collections.Counter(['aa','bb','cc'])
print(stra)
stra.update(['dd','aa','bb'])
print(stra)
结果:
Counter({'aa': 1, 'cc': 1, 'bb': 1})
Counter({'aa': 2, 'bb': 2, 'cc': 1, 'dd': 1}) 证明增加成功。
删除:
import collections
stra = collections.Counter(['aa','bb','cc'])
print(stra)
stra.update(['dd','aa','bb'])
print(stra)
stra.subtract(['dd','aa','bb'])
print(stra)
输出结果:
Counter({'aa': 1, 'cc': 1, 'bb': 1})
Counter({'aa': 2, 'bb': 2, 'cc': 1, 'dd': 1})
Counter({'aa': 1, 'cc': 1, 'bb': 1, 'dd': 0})证明已经删除了。

二、有序字典(orderedDict)

  有序字典是对字典的补充:  

  

 dic = collections.OrderedDict()
dic['k1'] = 'v1'
dic['k2'] = 'v2'
dic['k3'] = 'v3'
dic['k4'] = 'v4'
dic['k5'] = 'v5'
print(dic)
结果输出:
OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3'), ('k4', 'v4'), ('k5', 'v5')])
值不会变而且是固定了,不像字典一样位置会是浮动变化的。 popitem用法:
dic = collections.OrderedDict()
dic['k1'] = 'v1'
dic['k2'] = 'v2'
dic['k3'] = 'v3'
dic['k4'] = 'v4'
dic['k5'] = 'v5'
print(dic)
c = dic.popitem()
print(dic)
print(c)
输出结果:
OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3'), ('k4', 'v4'), ('k5', 'v5')])
OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3'), ('k4', 'v4')])
('k5', 'v5')取出了‘k5’,'v5'是最后进的,所以遵循后进先出。
pop用法:
dic = collections.OrderedDict()
dic['k1'] = 'v1'
dic['k2'] = 'v2'
dic['k3'] = 'v3'
dic['k4'] = 'v4'
dic['k5'] = 'v5'
print(dic)
# c = dic.popitem()
c = dic.pop('k2') ###指定取出k2
print(dic)
print(c)
输出结果:
OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3'), ('k4', 'v4'), ('k5', 'v5')])
OrderedDict([('k1', 'v1'), ('k3', 'v3'), ('k4', 'v4'), ('k5', 'v5')]) pop表示是拿出删除据为己有。
v2 得到k2值 新增update:
dic = collections.OrderedDict()
dic['k1'] = 'v1'
dic['k2'] = 'v2'
dic['k3'] = 'v3'
dic['k4'] = 'v4'
dic['k5'] = 'v5'
print(dic)
dic.update({'k1':'','k5':'','k10':''})
print(dic)
输出结果:
OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3'), ('k4', 'v4'), ('k5', 'v5')])
OrderedDict([('k1', ''), ('k2', 'v2'), ('k3', 'v3'), ('k4', 'v4'), ('k5', ''), ('k10', '')])表示有k值更新k值。没有就新增。

三、默认字典(defaultdict)  

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

  

 import collections
dic = collections.defaultdict(list) #定义默认字典类型为list。
dic['k1'].append('')
print(dic)
输出:
defaultdict(<type 'list'>, {'k1': ['']}) 如果不采用默认字典:
import collections
dic = {}
dic['k1'].append('')
print(dic)
会报错:
Traceback (most recent call last):
File "C:/Users/daisy/PycharmProjects/s12/day3/collection-ϵ��.py", line 54, in <module>
dic['k1'].append('')
KeyError: 'k1'

四、可命名元组(namedtuple)

  

 import collections
#创建类。MyTupleClass
MyTupleClass = collections.namedtuple('MyTupleClass',['x','y','z'])
obj = MyTupleClass('xx','yy','zz')
print(obj.x)
print(obj.y)
print(obj.z)
测试:
xx
yy
zz

五、双向队列(deque)

  

 que = collections.deque()
que.append('')
que.appendleft('')
que.append('')
que.extend(['xx','xxd','xxxd'])
que.extendleft(['','',''])
print(que)
print(que.rotate(2))
print(que.count(''))
print(que)
执行:
deque(['', '', '', '', '', '', 'xx', 'xxd', 'xxxd'])
None
1
deque(['xxd', 'xxxd', '', '', '', '', '', '', 'xx'])

六、单向队列(queue.queue)在queue  

  

 import Queue
q = Queue.Queue()
q.put("abc")
q.put("def")
print(q.qsize())
print(q.get())
运行结果: 2
abc 先进先出:abc先进所以输出abc。

  

  

最新文章

  1. AngularJS 表单
  2. 【笔记】js Function类型 内部方法callee
  3. 网络--&gt;监控--&gt;OID--&gt;BGP
  4. Scala中Iterator允许执行一次
  5. codevs1004四子连棋[BFS 哈希]
  6. mysql 查询技巧
  7. 使用mongo-java-driver3.0.2.jar和mongodb3.0在java代码中的用户验证4
  8. centos 7 安装音乐播放器(亲测可用)
  9. Android 监听ListView、GridView滑动到底部
  10. 子元素的margin-top影响父元素原因和解决办法
  11. QT显示机制(7篇相关文章)
  12. IOC容器在框架中的应用
  13. golang使用Nsq
  14. linux文件系统初始化过程(3)---加载initrd(上)
  15. docker 给none镜像打镜像
  16. [转]谈谈 Bias-Variance Tradeoff
  17. python里面有人写while 循环用 用while 1 和while True的区别
  18. hdu6057 Kanade&#39;s convolution 【FWT】
  19. php教程之Smarty模板用法实例
  20. Android开发第二阶段(6)

热门文章

  1. JSR 303 - Bean Validation 是什么?
  2. Struts2 Action 匹配的几种方式
  3. [ZJOI 2010] 排列计数
  4. 火狐浏览器安装VULTR笔记
  5. bzoj 3809 Gty的二逼妹子序列——莫队+分块
  6. SIM卡(单卡)配置
  7. 使用svnsync实时备份SVN版本库
  8. idea创建vue项目,Terminal安装npm的淘宝镜像:&#39;npm&#39; 不是内部或外部命令,也不是可运行的程序 或批处理文件。
  9. mysql 快捷键
  10. POJ3268【最短路】