[Python-es] listas de cadenas de caracteres
Chema Cortés
chemacortes en wanadoo.es
Mie Ago 28 13:56:12 CEST 2002
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
El Mar 27 Ago 2002 16:13, Hernan Martinez Foffani escribió:
> > > - 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
> >
> > Hay un método mejor:
> >
> > letra_max=max(frecuencia)
>
> en diccionarios max() se aplica sobre las claves.
> en este ejemplo devuelve la letra mas alta (en ascii)
> y no la letra cuya frecuencia sea la mayor.
Cierto. Se nota que ayer no tuve un buen día :-S
La solución debería también considerar que varias letras pueden tener la misma
frecuencia. Algo tal que así:
m=0
letras_max=[]
for letra in frecuencia.keys():
if frecuencia[letra] > m:
m=frecuencia[letra]
letras_max=[letra] # olvidamos lo que hubiera hasta ahora
elif frecuencia[letra]==m:
letras_max.append(letra)
Algo más conciso, pero menos legible:
m=max(frecuencia.values())
letras_max=filter(lambda x: frecuencia[x]==m, frecuencia.keys())
o, mi versión preferida para buscar claves en diccionarios:
m=max(frecuencia.values())
letras_max=[k for k,v in frecuencia.items() if v==m]
Saludos,
- --
Chema Cortes (chemacortes en wanadoo.es) | LinuxUser#142755 - SuSE Linux 8.0
ZARALINUX http://www.zaralinux.org | "La ignorancia se apodera de quien
PYTANDO http://pytando.sf.net | se contenta con lo que sabe"
PGPKEY: mailto:chemacortes en wanadoo.es?subject=__PGPKEY__
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org
iD8DBQE9bLpfHLTQrABk8H0RAg3PAKDCqT+vE03N/g5Ap3ertzBO11ksSQCg+9Wy
4umGQEo73zxsdYKjrpDYYcU=
=NYZ0
-----END PGP SIGNATURE-----
Más información sobre la lista de distribución Python-es