[Python-es] RE: continuo con las listas de cadenas de caracteres
Hernan Martinez Foffani
hernan en orgmf.com.ar
Jue Ago 29 15:39:49 CEST 2002
para molestar un poco ...
> def contar(list):
^^^^---- lista
> for palabra in lista:
> for letra in palabra:
> frecuencia[letra] = frecuencia.get(letra,0)+1
for letra in "".join(lista):
frecuencia[letra] = frecuencia.get(letra,0)+1
> for letra in frecuencia:
> if letra_max == ' ':
> letra_max = letra #inicializo una, la primera del
> #dict, esto es lo que podrias
> #mejorar
> elif (frecuencia[letra] > frecuencia[letra_max]):
> letra_max = letra
para sacar la inicialización fuera del ciclo, reusa la ultima
letra del ciclo anterior (o cualquiera que esté en lista).
letra_max = letra # tomo la ultima del ciclo anterior.
for letra in frecuencia:
if frecuencia[letra] > frecuencia[letra_max]:
letra_max = letra
o mejor aún, una de las propuestas por Chema ("achicada" en
funcionalidad para seguir con el mismo ejemplo):
m=max(frecuencia.values())
letra_max=[k for k,v in frecuencia.items() if v==m][0]
# me quedo solo con una --------^^^
> for pal in lista:
> if letra_max in pal:
> lis_resul.append(pal) # la lista resultado con las
> # palabras que tienen a letra_max
> return (letra_max,lis_resul) #devuelvo las dos para luego
> #poder imprimir ambas
aqui tambien las comprensiones de listas vienen bien:
return letra_max, [pal for pal in lista if letra_max in pal]
aunque sospecho que Sonia no va a querer usarlas. ;-)
Saludos,
-Hernan
Más información sobre la lista de distribución Python-es