Agrupar por y contar en lista

Tengo una lista que está llena de palabras, como esta:

[0] 1
[1] 4
[2] 4
[3] 8
[4] 9
[5] 1
[6] 1

Básicamente, hay números aleatorios allí, pero el mismo número puede aparecer varias veces en esa lista.

Lo que quiero es agruparlos por número, pero también puedo decir cuántas veces ese número estaba en la lista. Para que tenga algo como:

[0] 
  [number] 1
  [total] 3  // Occured 3 times in the list
[1]
  [number] 4
  [total] 2
[2]
  [number] 8
  [total] 1
[3]
  [number] 9
  [total] 1

¿Hay una manera rápida / fácil de lograr esto? ¿O tengo que escribir todo tipo de bucles y comprobaciones para construir algo como esto manualmente?

Respuestas a la pregunta(5)

Su respuesta a la pregunta