10.7. Contar letras

En el capítulo 7 escribimos una función que contaba el numero de apariciones de una letra en una cadena. Una versión mas genérica de este problema es crear un histograma de las letras de la cadena, o sea, cuantas veces aparece cada letra.

Ese histograma podría ser útil para comprimir un archivo de texto. Como las diferentes letras aparecen con frecuencias distintas, podemos comprimir un archivo usando códigos cortos para las letras mas habituales y códigos mas largos para las que aparecen con menor frecuencia.

Los diccionarios facilitan una forma elegante de generar un histograma:

   1: >>> cuentaLetras = {}
   2: >>> for letra in "Mississippi":
   3: ... cuentaLetras[letra] = cuentaLetras.get (letra, 0) + 1
   4: ...
   5: >>> cuentaLetras
   6: {'M': 1, 's': 4, 'p': 2, 'i': 4}
   7: >>>

 


Inicialmente, tenemos un diccionario vacío. Para cada letra de la cadena, buscamos el recuento actual (posiblemente cero) y lo incrementamos. Al final, el diccionario contiene pares de letras y sus frecuencias.


Puede ser mas atractivo mostrar el histograma en orden alfabético. Podemos hacerlo con los métodos items y sort:




   1: >>> itemsLetras = cuentaLetras.items()
   2: >>> itemsLetras.sort()
   3: >>> print itemsLetras
   4: [('M', 1), ('i', 4), ('p', 2), ('s', 4)]

Ya había visto usted el metodo items, pero sort es el primer metodo aplicable a listas que hemos visto. Hay varios mas, como append, extend, y reverse.


Consulte la documentación de Python para ver los detalles.

0