python_collections中的Counter

代码来源 :

Python collections中的Counter作用以及源码分析

重点代码:

from collections import Counter
c=Counter('abbbbcdefg')

# output
c
# 无序的字典子类
Counter({'a': 1, 'b': 4, 'c': 1, 'd': 1, 'e': 1, 'f': 1, 'g': 1})
c['z']
0  # 针对c中不存在的元素,默认为0
del c['a']  # 将a的计数设置成0
# 返回一个迭代器,其中的元素重复次数和它的count一样多,元素返回次序任意,如果count小于1,将会被忽略
list(c.elements())
# output
['f', 'e', 'b', 'b', 'd', 'c', 'g']  
list(c.most_common(2))  # 次序任意,提取前两个元素
[('a', 3), ('e', 1)]
c.subtract('b')  # 扣除某个具体元素后or 可迭代or可哈希对象,该元素计数为0,有点儿类似于del
# output
Counter({'b': 0, 'c': 1, 'd': 1, 'e': 1, 'f': 1, 'g': 1})

c.subtract(b=2,c=3,x=5)
# output
Counter({'a': 1, 'b': 2, 'c': -2, 'd': 1, 'e': 1, 'f': 1, 'g': 1, 'x': -5})
c.items()
# output
dict_items([('f', 1), ('e', 1), ('b', 2), ('a', 1), ('d', 1), ('c', -2), ('x', -5), ('g', 1)])
c+=Counter()
# Output

Counter({'a': 1, 'b': 2, 'd': 1, 'e': 1, 'f': 1, 'g': 1})

my_list=[1,2,3,4]
my_list[:-4:-1]  # 第三个索引代表倒序,第二个索引代表结束位置,(不包括结束位置)
[4, 3, 2]
c = Counter(a=3, b=1)
d = Counter(a=1, b=2)
c&d  # 返回每种元素的最小值
Counter({'a': 1, 'b': 1})

c = Counter(a=3, b=1, e=1)
d = Counter(a=1, b=2, f=-2)
print(c-d)  # 运算数不存在某元素,该元素默认为0
print(c&d)
print(c|d)
Counter({'f': 2, 'a': 2, 'e': 1})
Counter({'b': 1, 'a': 1})
Counter({'a': 3, 'b': 2, 'e': 1})

小测试

# 可能根据元组中的第二个参数的每个字符所对应的ASCII码来比较大小,从大到小
from collections import Counter

d = Counter(b='love', k='you', z='lily', x='michael')
d.most_common(3)  # [('k', 'you'), ('x', 'michael'), ('b', 'love')]


'abc'*3
'abcabcabc'

['abc']*3
['abc', 'abc', 'abc']

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值