代码来源 :
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']