Python: подсчет повторяющихся значений словаря

У меня есть следующий словарь:

dictA = { ('unit1','test1') : 'alpha' , ('unit1','test2') : 'beta', ('unit2','test1') : 'alpha', ('unit2','test2') : 'gamma' , ('unit3','test1') : 'delta' , ('unit3','test2') : 'gamma'   }

Как я могу подсчитать количество повторяющихся значений для каждого теста независимо от единиц?

i.e.

в «test1» есть 2x «альфа», 1x «дельта»

в «test2» есть 1x «бета», 2x «гамма»

Любые входы?

Огромное спасибо.


person siva    schedule 30.03.2011    source источник


Ответы (1)


В Python 2.7 или 3.1 или выше вы можете использовать collections.Counter:

from collections import Counter
counts = Counter((k[1], v) for k, v in dictA.iteritems())
print(counts)

отпечатки

Counter({('test1', 'alpha'): 2, ('test2', 'gamma'): 2, ('test2', 'beta'): 1, ('test1', 'delta'): 1})
person Sven Marnach    schedule 30.03.2011
comment
В предыдущих версиях collections.defaultdict(int) работал аналогично. - person chmullig; 30.03.2011