[Python-es] listas de cadenas de caracteres

Garikoitz Araolaza gari en eibar.org
Mar Ago 27 12:27:21 CEST 2002


At 11:55 27/08/02, you wrote:
>hola!
>necesito ayuda para un sencillo programa q tengo q hacer en python y tengo 
>dificultad. se trata simplemente, de, realizar una funcionq, a partir de 
>una lista de cadena de caracteres,devuelva otra lista con aquellas cadenas 
>que contengan el caracter mas frecuente de la lista inicial.

Hmmmm...  ésta me la sé!   ;-)

Pero como supongo que es un ejercicio de clase, te cuento más o menos cómo 
se podría hacer y luego lo haces tú   ;->

- Tienes que conseguir un diccionario de letras en las que se indique 
cuántas veces aparezca cada letra. El resultado final de esta fase debe ser:

frecuencia  ->   {'a':34, 'b':23, 'c':12....   }

o algo así. Para ello, simplemente vas cogiendo letra a letra de cada 
cadena de la lista y vas contándolos en tu diccionario:

if frecuencia.has_key[tu_letra]:
     frecuencia[tu_letra] = frecuencia[tu_letra] + 1
else:
     frecuencia[tu_letra] = 1

- Después buscas cuál es la letra con mayor frecuencia. Como no va a haber 
demasiadas letras, (máximo 28...) pues quizás lo mejor es hacer:

letra_max = ''
for letra in frecuencia.keys():
      if frecuencia[letra] > frecuencia[letra_max]:
          letra_max = letra

- Después sólo tienes que ir buscando en todos los strings la letra 
letra_max con la función mi_string.find(letra_max)  y si el resultado es 
mayor que -1, señal de que lo ha encontrado, con lo que basta con 
agregarlos a tu lista final con lista_final.append(mi_string)

Seguro que hay formas más optimizadas de hacerlo, pero también serán más 
liosas...

Saludos


_________________________________________
Garikoitz Araolaza
gari en eibar.org





Más información sobre la lista de distribución Python-es