在Python中的Counter | 如何初始化和更新

在Python中的Counter | 如何初始化和更新

在本教程中,我们将讨论包含在collection模块中的Counter。我们还将解释如何使用它来解决问题。首先,让我们简要介绍Counter。

什么是Counter

Counter被称为容器,它保存容器中每个元素的计数。它们允许我们访问存储的对象。字典类将Counter作为子类。Counter帮助我们计算对象中的键值对。它们也被称为哈希表对象。列表、元组、字典都是内置容器的示例,而且许多内置容器都包含在collection模块中。它可以被看作是其他语言中的一个袋子或多重集合。下面是Counter的语法。

语法:

class collections.Counter([iterable-or-mapping])

初始化

我们可以在以下任何一种方式中调用计数器的构造函数:

  • 我们可以使用项目序列来调用它。
  • 使用包含键和计数的字典调用它。
  • 使用字符串调用它。
  • 使用关键字参数将字符串名称映射到计数调用它。

为什么要使用计数器

以下是在Python程序中使用计数器的主要原因。

  • 计数器用于将数据存储在无序集合中,就像哈希表对象一样。元素被表示为键,计数被表示为值。
  • 它提供了对可迭代列表中的项目进行计数的功能。
  • 我们可以对计数器执行基本的算术操作,如加法、减法、交互和联合。
  • 计数器也能够计算另一个计数器中的元素。

计数器的实现

Python使用可迭代对象(如列表、字典、元组、字符串)作为参数,并返回每个元素的计数。

考虑以下包含多个元素的列表。

List1 = [a, b, a, a, c, d, e, c, d, f]

列表中有重复的元素。我们将使用计数值来显示这些元素出现的次数。让我们看下面的示例。

示例1:

from collections import Counter
List1 = ['a', 'b', 'a', 'a', 'c', 'd', 'e', 'c', 'd', 'f']
# Print count of the variable
print(Counter(List1))

输出:

Counter({'a': 3, 'c': 2, 'd': 2, 'b': 1, 'e': 1, 'f': 1})

所以我们有a的数量为3,b为1,e为1,c为2,f为1。

示例2:

from collections import Counter
# With the list
print(Counter(['X','Y','X','Y','Z','X','Y','Y','X','Z']))

# with the dictionary
print(Counter({'X':5, 'Y':2, 'Z':4}))

# with keyword arguments
print(Counter(A=3, B=5, C=2))

输出:

Counter({'X': 4, 'Y': 4, 'Z': 2})
Counter({'X': 5, 'Z': 4, 'Y': 2})
Counter({'B': 5, 'A': 3, 'C': 2})

更新计数器

集合模块提供了 update() 方法,可以更新或添加值。语法如下 –

_count.update('Welcome to JavaTpoint Tutorials!')

让我们来理解以下示例。

示例

from collections import Counter
count_num = Counter()
count_num.update('Welcome to JavaTpoint Tutorials!')
print(count_num)

输出:

Counter({'o': 4, ' ': 3, 't': 3, 'a': 3, 'e': 2, 'l': 2, 'T': 2, 'i': 2, 'W': 1, 'c': 1, 'm': 1, 'J': 1, 'v': 1, 'p': 1, 'n': 1, 'u': 1, 'r': 1, 's': 1, '!': 1})

访问计数器

我们可以从计数器中访问值。让我们理解下面的示例。

示例

from collections import Counter
count_num = Counter()
count_num.update('Welcome to JavaTpoint Tutorials!')
print('%s : %d' % ('u', count_num['T']))
print('\n')
for char in 'Tutorials':
    print('%s : %d' % (char, count_num[char]))

输出:

u : 2


T : 2
u : 1
t : 3
o : 4
r : 1
i : 2
a : 3
l : 2
s : 1

从计数器中删除一个元素

使用 del 关键字可以删除计数器中的元素。让我们来看下面的示例。

示例

from collections import Counter
dict1 =  {'a': 3, 'b': 1, 'c': 8}
del dict1["c"]
print("Dictionary After Deletion:", Counter(dict1))

输出:

Dictionary After Deletion: Counter({'a': 3, 'b': 1})

如何在Python Counter上执行算术运算

如上所述,我们可以执行各种算术运算,如加法、减法、交集和并集。让我们了解下面的示例。

示例

from collections import Counter
counter_1 =  Counter({'a': 5, 'b': 1, 'c': -3, 'd': 7})

counter_2 = Counter({'a1': -10, 'b': 10, 'c':14 })

#Addition
counter_3 = counter_1 + counter_2 

print(counter_3)

#Subtraction
counter_4 = counter_1 - counter_2 

print(counter_4)

#Intersection
counter_5 = counter_1 & counter_2 
print(counter_5)

#Union
counter_6 = counter_1 | counter_2 
print(counter_6)

输出:

Counter({'b': 11, 'c': 11, 'd': 7, 'a': 5})
Counter({'a1': 10, 'd': 7, 'a': 5})
Counter({'b': 1})
Counter({'c': 14, 'b': 10, 'd': 7, 'a': 5})

计数器与字符串

正如我们所知,Python 中的一切都是对象,所以字符串也是一个对象。字符串是用双引号括起来的字符。Python 中没有字符类型。

在下面的示例中,我们将字符串传递给计数器,它将返回具有键/值对的字符字典。键是元素,值是计数。

示例

from collections import Counter
str1 = "Welcome to JavaTpoint Tutorial"
print(Counter(str1))

输出:

Counter({'o': 4, ' ': 3, 't': 3, 'a': 3, 'e': 2, 'l': 2, 'T': 2, 'i': 2, 'W': 1, 'c': 1, 'm': 1, 'J': 1, 'v': 1, 'p': 1, 'n': 1, 'u': 1, 'r': 1})

使用字典计数

字典将元素存储在大括号内定义的键值对中。当我们将字典传递给Counter时,它将返回一个哈希表对象元素。该元素将变为键,值将被计算为给定字典中的元素。

让我们来理解下面的示例。

示例

from collections import Counter
dict1 =  {'a': 5, 'b': 6, 'c': 7, 'c': 2}
print(Counter(dict1))

输出:

Counter({'b': 6, 'a': 5, 'c': 2})

计数器与元组

元组是一个不可变的数据结构,其中的元素用逗号分隔并放在圆括号内。元组将被转换为哈希表对象。计数器将提供给定元组中每个元素的计数。元素将成为键,计数将作为给定字典的元素值。

让我们理解以下示例。

示例

from collections import Counter
tup1 = ('x','y','z','x','x','x','y','z')
print(Counter(tup1))

输出:

Counter({'x': 4, 'y': 2, 'z': 2})

Python Counter中的一些重要方法

以下是Counter中一些常用的方法。

  • elements()方法 - 该方法返回计数大于0的元素。计数为0或-1的元素将被完全省略。

示例

from collections import Counter
counter1 =  Counter({'a': 5, 'b': 2, 'c': -2, 'd':0})

new_elements = counter1.elements()
for i in new_elements:
    print(i)

输出:

a
a
a
a
a
b
b
  • most_common(value) – 它返回Counter列表中最常见的元素。它根据最常见的元素首先排序字典,然后是下一个元素。如果我们不传递值给most_common()方法,它将把第一个元素排序为最常用的元素,最后一个元素排序为最不常用的元素。让我们看以下示例。

示例

from collections import Counter
counter1 =  Counter({'a': 5, 'b': 2, 'c': -2, 'd':0})
new_elements = counter1.most_common(2)

new_elements1 = counter1.most_common()

print(new_elements)

print(new_elements1)

输出:

[('a', 5), ('b', 2)]
[('a', 5), ('b', 2), ('d', 0), ('c', -2)]
  • subtract()方法 – 执行减法后,它返回新的Counter对象。让我们来看下面的示例。

示例

from collections import Counter
counter1 =  Counter({'x': 4, 'y': 3, 'z': 8})
counter2 = Counter({'x': 2, 'y':5, 'z': 1})

counter1.subtract(counter2)
print(counter1)

输出:

Counter({'z': 7, 'x': 2, 'y': -2})

结论

在本教程中,我们介绍了Python Counter的几乎所有重要概念。计数器是一种容器,用于存储容器中每个元素的计数。计数器允许我们计算可迭代列表中的项目,我们可以将其用于其他可迭代对象。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程