Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中计算collections.Counter()的共现次数?_Python_Collections_Counter - Fatal编程技术网

如何在python中计算collections.Counter()的共现次数?

如何在python中计算collections.Counter()的共现次数?,python,collections,counter,Python,Collections,Counter,我最近了解了这门课,因为它是一种简单(快速)的计数方法,所以我开始使用它 但我最近在我的程序中检测到一个bug,因为当我尝试用一个元组更新计数时,它实际上将其视为一个序列,并更新元组中每个项目的计数,而不是计算我插入该特定元组的次数 例如,如果您运行: import collections counter = collections.Counter() counter.update(('user1', 'loggedin')) counter.update(('user2', 'compiled

我最近了解了这门课,因为它是一种简单(快速)的计数方法,所以我开始使用它

但我最近在我的程序中检测到一个bug,因为当我尝试用一个元组更新计数时,它实际上将其视为一个序列,并更新元组中每个项目的计数,而不是计算我插入该特定元组的次数

例如,如果您运行:

import collections
counter = collections.Counter()
counter.update(('user1', 'loggedin'))
counter.update(('user2', 'compiled'))
counter.update(('user1', 'compiled'))

print counter
您将获得:

Counter({'compiled': 2, 'user1': 2, 'loggedin': 1, 'user2': 1})

结果,。有没有一种方法可以使用计数器()计算元组数?我可以连接字符串,但这是。。。丑陋的。我可以使用命名元组吗?实现我自己的非常简单的字典计数器?不知道什么是最好的。

当然:只需添加一级间接寻址,即pass
。更新以元组为元素的容器

>>> import collections
>>> counter = collections.Counter()
>>> counter.update((('user1', 'loggedin'),))
>>> counter.update((('user2', 'compiled'),))
>>> counter.update((('user1', 'compiled'),))
>>> counter.update((('user1', 'compiled'),))
>>> counter
Counter({('user1', 'compiled'): 2, ('user1', 'loggedin'): 1, ('user2', 'compiled'): 1})

在我看来,更好的语法应该是counter.update([(1,2)],而不是使用逗号强制使用iterable。但不确定构建列表的速度影响。无论如何,这解决了我的问题。