Python 用Counter做映射

  • Post category:Python

使用Counter可以方便快捷地对序列中的元素进行频次统计,同时也可以被用作映射等应用。

以下是使用Counter做映射的完整攻略,包含了使用方法、示例说明以及相关操作。

Counter简介

Counter是Python内置的一个用于统计频率的工具类。它接受一个包含元素的可迭代对象,并输出元素出现的频率表,即一个字典,其中元素作为键,其出现次数作为值。

使用Counter必须先导入collections模块,使用时需要创建一个Counter对象并将待统计的序列作为参数传入。Counter对象是一个字典,可以使用字典的一些操作。

使用方法

以下是Counter的使用方法:

创建Counter

import collections

seq = [1, 2, 3, 4, 5, 3, 2, 1, 4, 3]
counter = collections.Counter(seq)

访问Counter

可以像字典一样访问Counter,获取元素的出现次数:

count_1 = counter[1]
count_2 = counter[2]
count_3 = counter[3]

更新Counter

可以使用update()方法将新的元素加入Counter:

seq_new = [1, 2, 3, 3, 3, 3]
counter.update(seq_new)

其他操作

  • most_common(n)方法:返回Counter中出现次数最多的前n个元素,以元素和出现次数的元组形式返回。
  • 执行算术或逻辑运算:可以进行加、减、交、并、或等运算,返回一个新的Counter对象。

示例说明

示例1:统计字符串中的字母出现次数

import collections

str = "hello,world!"
counter = collections.Counter(str)
print(counter)

输出结果:

Counter({'l': 3, 'o': 2, 'e': 1, 'h': 1, ',': 1, 'w': 1, 'r': 1, 'd': 1, '!': 1})

示例2:统计列表中元素出现次数并排序

import collections

seq = [1, 2, 3, 4, 5, 3, 2, 1, 4, 3]
counter = collections.Counter(seq)
sorted_counter = sorted(counter.items(), key=lambda item: item[1], reverse=True)

for key, count in sorted_counter:
    print(str(key) + ": " + str(count))

输出结果:

3: 3
1: 2
2: 2
4: 2
5: 1