Python Counter的简单用法

这玩意是collections中的一个类,至于作用嘛,如字面意思,计数,统计每个元素的出现次数。一个例子如下:

from collections import Counter

lst = [1, 1, 1, 2, 3, 3]
cnt = Counter(lst)
print(type(cnt))
for key, value in cnt.items():
    print(key, value)
print(cnt[3])

输出结果如下:

<class 'collections.Counter'>
1 3
2 1
3 2
2

具体来说,调用Counter包装后得到的是一个Counter对象,这个对象可以直接按照hashmap的风格来访问。比方说,我们要求lst中数字3的出现次数,那么直接访问cnt[3]即可。

这么做有什么好处呢?如果使用hashmap来实现类似的功能的话,那么代码则是这样的:

cnt = dict()
for t in lst:
    if t not in cnt.keys():
        cnt[t] = 0
    cnt[t] += 1
print(type(cnt))
print(cnt.items())
for key, value in cnt.items():
    print(key, value)
print(cnt[3])

也就是省去了for循环把数据塞进hashmap的这一步。

例题:Leetcode 1512. 好数对的数目
解答:

class Solution:
    def numIdenticalPairs(self, nums: List[int]) -> int:
        return sum([v * (v - 1) // 2 for k, v in collections.Counter(nums).items()])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值