collections.Counter()

2024-01-05 11:26:54 浏览数 (3)

Counter()是python标准库collections下的一个计数器工具。

作用:统计可迭代对象中元素出现的次数,并返回一个字典。

(补充:可迭代对象包含列表、元组、字符串、字典等)

一、创建Counter()

1.# 创建一个新的空Counter

代码语言:python代码运行次数:0复制
c = collections.Counter()

代码语言:python代码运行次数:0复制
from collections import Counter

c = Counter()

2.函数参数为可迭代对象时,例:

代码语言:python代码运行次数:0复制
list1 = [9,4,9,8,4]

c = collections.Counter(list1)

print(c)   # Counter({9: 2, 4: 2, 8: 1})

注意:当访问不存在的key时,返回值为0。

接上,print(c5) # 0

3.访问元素

Counter()是字典的子类,因此可以像使用字典那样访问计数器元素(值)。

访问方式:Counter“键名”/get()

4.学习案例:leetcode 两个数组的交集II https://leetcode.cn/problems/intersection-of-two-arrays-ii/description/

使用哈希表方法:

代码语言:python代码运行次数:0复制
class Solution:
    def intersect(self, nums1: List[int], nums2: List[int]) -> List[int]:
        # 为了降低空间复杂度,首先遍历较短的数组
        if len(nums1) > len(nums2):
            return self.intersect(nums2,nums1)

        ans = []
        c = collections.Counter(nums1)
        for n in nums2:
            if n in c:
                ans.append(n)
                c[n] -= 1
                if c[n] == 0:
                    c.pop(n)

        return ans

0 人点赞