Если ваш список отсортирован, альтернативным способом было бы использовать itertools.groupby . Возможно, это не самый эффективный способ, но, тем не менее, это интересно. Он возвращает значение элемента> количество:
>>> import itertools
>>> l = [1,1,2,3,4,4,4,5,5,6,6,6,7]
>>> dict([(key, len([e for e in group]))
for (key, group)
in itertools.groupby(l)])
{1: 2, 2: 1, 3: 1, 4: 3, 5: 2, 6: 3, 7: 1}