python有几个系列_python collection系列

collection系列

不常用功能,需要进行模块功能导入:

import collection

Counter

常用方法测试:

#!/usr/local/env python3

'''

Author:@南非波波

Blog:http://www.cnblogs.com/songqingbo/

E-mail:qingbo.song@gmail.com

'''

import collections

obj = collections.Counter('sjndsjkdsdmslaladsldsldms')

print("输出字符出现的次数字典:")

for k,v in obj.items():

print("{%s:%s}" % (k,v))

print("输出每一个字符:") #遍历获取原始字符元素

for k in obj.elements():

print(k)

print("输出前四个出现次数最多的字符:")

for k in obj.most_common(4):

print(k)

输出结果:

输出字符出现的次数字典:

{s:7}

{l:4}

{m:2}

{d:6}

{k:1}

{n:1}

{j:2}

{a:2}

输出每一个字符:

s

s

s

s

s

s

s

l

l

l

l

m

m

d

d

d

d

d

d

k

n

j

j

a

a

输出前四个出现次数最多的字符:

('s', 7)

('d', 6)

('l', 4)

('m', 2)

_missing_

功能:对于不存在的元素,返回计数器为0

import collections

c = collections.Counter('adjsdkskdjksjaksklklakl')

c.__missing__(5)

返回结果:0

most_common

功能:获取出现次数的前几个字母排名

import collections

c = collections.Counter('adjsdkskdjksjaksklklakl')

c.most_common(3)

[('k', 7), ('s', 4), ('a', 3)]

c.most_common(8)

[('k', 7), ('s', 4), ('a', 3), ('j', 3), ('l', 3), ('d', 3)]

elements

功能:计数器中的所有元素,并且按照ascii码进行了排序

返回一个迭代器。元素被重复了多少次,在该迭代器中就包含多少个该元素。所有元素按照字母序排序,个数小于1的元素不被包含。

import collections

c = collections.Counter('adjsdkskdjksjaksklklakl')

sorted(c.elements())

返回结果:['a', 'a', 'a', 'd', 'd', 'd', 'j', 'j', 'j', 'k', 'k', 'k', 'k', 'k', 'k', 'k','l', 'l', 'l', 's', 's', 's', 's']

计数值的访问与缺失的键

功能:默认将计数器中所有的字符认为一个键,然后统计键出现的次数,即键值。如果键不存在则返回0.

import collections

c = collections.Counter('adjsdkskdjksjaksklklakl')

>>> c['a']

3

>>> c['b']

0

>>> c['l']

3

update && subtract

功能:都是更新计数器,update是增加,subtract是减少

import collections

>>> c = collections.Counter('which')

>>> c['h'] #这里的h出现2次

2

>>> c.update('with')

>>> c

Counter({'h': 3, 'i': 2, 'w': 2, 't': 1, 'c': 1})

>>> c['h'] #这里则完成了update操作,h出现了3次

3

>>> c.subtract('with')

>>> c

Counter({'h': 2, 'c': 1, 'i': 1, 'w': 1, 't': 0})

>>> c['h'] #这里完成subtract操作之后,h出现的次数又恢复到2次

2

del

功能:删除键

import collections

>>> c = collections.Counter('which')

>>> c['h'] #这里的h出现2次

2

>>> del c['h']

>>> c

Counter({'c': 1, 'i': 1, 'w': 1, 't': 0})

>>> c['h'] #del操作删除了键'h'

0

copy

功能:浅拷贝

import collections

>>> c = collections.Counter('which')

>>> d = c.copy()

>>> d

Counter({'h': 2, 'c': 1, 'i': 1, 'w': 1})

>>> id(c)

7150792

>>> id(d)

6511976

算术和集合操作

功能:+、-、&、|操作也可以用于Counter。其中&和|操作分别返回两个Counter对象各元素的最小值和最大值。需要注意的是,得到的Counter对象将删除小于1的元素。

常用操作

说明:Counter继承dict的所有方法,常用的操作列在下面,仅供参考

有序字典orderedDict

有序字典继承字典的一切属性,只是在顺序上是有序的。

d = collections.OrderedDict({'name':'swht','age':18})

print(d)

返回结果:OrderedDict([('name', 'swht'), ('age', 18)])

print(type(d))

返回结果:

move_to_end

功能:将指定的键值对从开头移动到末尾。

d = collections.OrderedDict({'name':'swht','age':18,'address':'shandong',})

d.move_to_end('name')

print(d)

返回结果:OrderedDict([('age', 18), ('address', 'shandong'), ('name', 'swht')])

pop

功能:移除字典键值,并返回删除键值的values

d = collections.OrderedDict({'name':'swht','age':18,'address':'shandong',})

d.pop('address')

print(d)

返回结果:OrderedDict([('age', 18), ('name', 'swht')])

clear

功能:清空有序字典的值

d = collections.OrderedDict({'name':'swht','age':18,'address':'shandong',})

d.clear()

print(d)

返回结果:OrderedDict()

keys,values,items

功能:继承字典的属性,获取字典的所有键和所有值

d = collections.OrderedDict({'name':'swht','age':18,'address':'shandong',})

l1 = d.keys()

l2 = d.values()

l3 = d.items()

print(l1,l2,l3)

返回结果:odict_keys(['address', 'age', 'name']) odict_values(['shandong', 18, 'swht']) odict_items([('age', 18), ('name', 'swht'), ('address', 'shandong')])

默认字典defaultdict

defaultdict是对字典的类型的补充,他默认给字典的值设置了一个类型。创建一个默认字典,value值类型为列表.

dic = collections.defaultdict(list)

可命名元组nametuple

没有现成的类,用户需要自行创建相应的类

测试代码

#!/usr/local/env python3

'''

Author:@南非波波

Blog:http://www.cnblogs.com/songqingbo/

E-mail:qingbo.song@gmail.com

'''

import collections

MytupleClass = collections.namedtuple("MytupleClass",['x','y','z'])

obj = MytupleClass(11,22,33)

print(obj.x,obj.y,obj.z)

返回结果:11 22 33

总结:相当于在元组的基础上增加一个key,使其成为一个类字典的样子

队列

双向队列

下面两种方法都可以创建双向列表,虽然在最初的引用的类不同,但最后创建的类型 都是collections.deque

#创建双向队列

import collections

d = collections.deque()

返回结果:

#but这样创建双向队列呢

import queue

p = queue.deque()

print(type(p))

#

单向队列

#创建单向队列

import queue

q = queue.Queue()

print(type(q))

#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值