¿Cómo contar co-ocurrencias con colecciones.Counter () en python?

Aprendí sobre la clase de colecciones.Counter () recientemente y, como es una forma limpia (y rápida?) De contar cosas, empecé a usarla.

Pero detecté un error en mi progtwig recientemente debido al hecho de que cuando bash actualizar el conteo con una tupla, en realidad lo trata como una secuencia y actualiza el conteo para cada elemento en la tupla en lugar de contar cuántas veces inserté esa tupla en particular .

Por ejemplo, si ejecuta:

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

Obtendrás:

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

como resultado. ¿Hay alguna manera de contar las tuplas con el Contador ()? Podría concatenar las cuerdas pero esto es … feo. ¿Podría usar tuplas con nombre? ¿Implementar mi propio contador de diccionarios muy simple? No sé qué es lo mejor.

Claro: simplemente tiene que agregar un nivel de .update indirecto, es decir, pasar. .update un contenedor con la tupla como un elemento.

 >>> 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})