¿La forma más eficiente de calcular la frecuencia de los valores en una lista de Python?

Estoy buscando una forma rápida y eficiente de calcular la frecuencia de los elementos de la list en python:

 list = ['a','b','a','b', ......] 

Quiero un contador de frecuencia que me dé una salida como esta:

  [ ('a', 10),('b', 8) ...] 

Los artículos deben estar ordenados en orden descendente de frecuencia como se muestra arriba.

Python2.7 +

 >>> from collections import Counter >>> L=['a','b','a','b'] >>> print(Counter(L)) Counter({'a': 2, 'b': 2}) >>> print(Counter(L).items()) dict_items([('a', 2), ('b', 2)]) 

python2.5 / 2.6

 >>> from collections import defaultdict >>> L=['a','b','a','b'] >>> d=defaultdict(int) >>> for item in L: >>> d[item]+=1 >>> >>> print d defaultdict(, {'a': 2, 'b': 2}) >>> print d.items() [('a', 2), ('b', 2)]