python-collections.counter

python-collections.counter

原文:https://docs.python.org/zh-cn/3.11/library/collections.html?highlight=defaultdict#collections.Counter

github:https://github.com/python/cpython/blob/main/Doc/library/collections.rst#id13

原文介绍中:counter就是python:dict的子类,特殊地方在于value值只能是整数(包括0和负数),并且只能统计可以被hash计算的元素。

本质就是可以将任何列表字符串方便的转换为计数字典。

初始化

collections.counter(iterable, map, keyword_args), 三种方式:可迭代对象,映射对象,关键字参数

from collections import  Counter

# 方式一,可迭代对象,list, string,
c1 = Counter("soft apple")

'''
Counter({'p': 2,
         's': 1,
         'o': 1,
         'f': 1,
         't': 1,
         ' ': 1,
         'a': 1,
         'l': 1,
         'e': 1})
'''


# 方式二,map对象,dict
c2 = Counter({'red':4, 'blue':2})

'''
Counter({'red': 4, 'blue': 2})
'''


# 方式三, 关键字参数
c3 = Counter(yellow=4, orange=2)

'''
Counter({'yellow': 4, 'orange': 2})
'''
增加

counter有一个非常方便的特性,如果查询不到会返回零。那么以下场景会非常方便。

cnt = Counter()
for word in ['red', 'blue', 'red', 'green', 'blue', 'blue']:
    cnt[word] += 1

# 使用原始dict各方面的不方便。
cdict = {}
for word in ['red', 'blue', 'red', 'green', 'blue', 'blue']:
    cdict[word] = cdict.get(word, 0) + 1

'''
cnt
Counter({'blue': 3, 'red': 2, 'green': 1})

'''
常用方法:
c1 = Counter('red'=4, 'blue'=2)
c2 = Counter('red'=5, 'blue'=3)


# substract/update
c1.substract(c2) # 就是c1 - c2
c1.update(c2) # 就是c1 + c2

# total
c1.total() # 所有values综合

# clear
c1.clear() # 所有value归零

# list(c1)
list(c1) # ['red', 'blue'],只返回键

# set(c1)
set(c1) # {'blue', 'red'}

# dict(c1)
dict(c1) # {'red': 4, 'blue': 2}

# items()
c1.items() # [(key, value), ...(key, value)]

# most_common()
c1.most_common(1) # [('red', 4)]
c1.most_common()[::-1] # [('blue', 2), ('red', 4)]

# +c
+c1 # 去除掉value为零或负数的键值对。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值