最新免费视频:www.pythonav.com (冒着被砍死的风险)

collections --Counter

collections 模块--Counter

目的是用来跟踪值出现的次数。是一个无序的容器类型,以字典的键值对形式存储,其中元素为 key,其计数作为 value。计数值可以是任意的 Integer(整数)(包括0和负数)。Counter 类和其他语言的 bags 或 multisets(多重集) 很相似

创建: 有四种方法

Counter 类的创建


c = Counter('xxo')#从一个可 iterable 对象(list,tuple,dict,字符串等)创建

c = Counter({'a':1,'b':2})#从一个字典对象创建

计数值的访问和缺失的键

当所访问的键不存在时,返回0,而不是 KeyError;否则返回它的计数。

计数值的访问

c = Counter('abcdeafg')

c['a']

2

c['c']
1

c['h']
0

计数器的更新(update和subtract)

可以使用一个iterable对象或者另一个Counter对象来更新键值。

计数器的更新包括增加和减少两种。

增加使用update()方法

计数器的更新(update)

c = Counter('watch')
c.uodate('witch') #使用另一个 iterable 对象更新
c.['h']
3

d = Counter('watch')
c.update(d) # 使用另一个 Counter 对象来更新
c['h']
4

减少则使用 subtract() 方法:

计数器的更新(subtract) ``` c = Counter('which') c.subtract ('witch')#使用另一个iterable 对象更新 c['h'] 1

d = Counter('watch') c.subtract(d)#使用另一个 Counter 对象更新 c['a'] -1 ```

from collections import Counter

c = Counter()

c = Counter('hello ff')

# c = Counter({'a':1,'b':2})

# c = Counter(a = 1,b =2)

print(c)

Counter({'l': 2, 'f': 2, 'h': 1, 'e': 1, 'o': 1, ' ': 1})

c = Counter('helloff')

c.update('hellopp')

print(c['f'])

print(c['h'])

print(c['l'])

update 就是把这个对象增添进去

c = Counter('helloff')

c.subtract('helloopp')

print(c['h'])

print(c['f'])

print(c['o'])

0

2

-1

c = Counter('abcefgpwf666')

# print(c)

# print(c['6'])

# print(c[6]) #找数字6,里面只有 str 类型的6,所有结果为0

c['6']=2 #直接把 str6修改为个数为1, 不是删除1个

print(c['6'])

del c['f']

print(c)

print(c)

elements()

返回一个迭代器.元素被重复了多少次,在该迭代器中就包含多少个该元素.元素排列无确定顺序,个数小于1的元素不被包含

c = Counter(a =1,b=2,c=3,d=0)

print(list(c.elements()))

['a', 'b', 'b', 'c', 'c', 'c']

most_common([n])

返回一个 TopN 列表.如果 n 没有被指定,则返回所有元素.当多个元素计数值相同时,排列是无确定顺序的.

c = Counter('sdkfjlkdsjgkjdjsdkjf')

print(c.most_common())

# [('j', 5), ('d', 4), ('k', 4), ('s', 3), ('f', 2), ('l', 1), ('g', 1)]

print(c.most_common(2))

[('j', 5), ('d', 4)]

copy

c = Counter(a=1,b=2)

print(c)

d = c.copy()

print(d)

集合和算数操作

+,-,&,| 操作也可以用于 Counter. 其中&和|操作分别返回两个 Counter 对象个元素的最小值和最大值.

需要注意的是,得到的 Counter 对象将删除小于1的元素.

c = Counter(a=3,b=1)

d = Counter(a=1,b=2)

print(c+d) #Counter({'a': 4, 'b': 3})

print(c-d) #Counter({'a': 2}) # subtract (减去)只保留正数计数的元素

posted @ 2017-08-09 19:45  uuuuuuu  阅读(160)  评论(0编辑  收藏  举报

最新免费视频:www.pythonav.com (冒着被砍死的风险)