如何计算与python中的collections.Counter()共同出现?

Raf*_*ini 3 python collections counter

我最近了解了collections.Counter()类,因为它是一种简洁(快速??)的计算方法,我开始使用它.

但是我最近在我的程序中发现了一个错误,因为当我尝试用元组更新计数时,它实际上将它视为一个序列并更新元组中每个项目的计数,而不是计算我插入的次数那特定的元组.

例如,如果您运行:

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

print counter
Run Code Online (Sandbox Code Playgroud)

你会得到:

Counter({'compiled': 2, 'user1': 2, 'loggedin': 1, 'user2': 1})
Run Code Online (Sandbox Code Playgroud)

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

DSM*_*DSM 7

当然:你只需添加一个间接级别,即传递.update一个以元组为元素的容器.

>>> 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})
Run Code Online (Sandbox Code Playgroud)