continuo con las listas de cadenas de caracteres

Ernesto Revilla aerd en retemail.es
Sab Ago 31 02:18:48 CEST 2002


Buenas,


> Las palabras a mirar son:
> ['pepe', 'dale', 'amigo', 'ernesto']
> Traceback (innermost last):
>   File "A:\def.py", line 28, in ?
>     res = contar(lista)
>   File "A:\def.py", line 10, in contar
>     frecuencia[letra] = frecuencia.get(letra,0)+1 #cuenta todas las letras
> AttributeError: get

Perdona, es que no entiendo a que viene el get. Supongamos que frecuencia es
un diccionario, se accede a su valor usando solo los corchetes, es decir,
con  'frecuencia[letra]'
con lo que todo quedaría en:
frecuencia[letra] = frecuencia[letra] + 1

A partir de Python 2.0 (creo) se usa  la forma:
frecuencia[letra] += 1
que significa, incrementar en 1.

Dado que da error si la clave no existe, y suponiendo una Python 2.2, se
puede hacer 2 cosas:

Solución1: mediante comprobación si la letra ya existe o no.
if letra in frecuencia:
    frecuencia[letra] += 1
else:
    frecuencia[letra] = 1

Solución 2: mediante tratamiento de errores:
try:
    frecuencia[letra]+=1
except KeyError:
    frecuencia[letra]=1

con lo que la función podría quedarse así:

def contar(palabras):
    frecuencia={}
    for palabra in palabras:
        for letra in palabra:
            try:
                frecuencia[letra]+=1
            except KeyError:
            frecuencia[letra]=1
    return frecuencia

Para que no te desesperes, te anexo una solución. Algunas funciones, como la
búsqueda de máximos, no son óptimas, pero son más fáciles de enteder. Por
otra parte, se permite la opción de ignorar la diferencia entre mayúsculas y
minúsculas.

Finalmente, por favor, siempre poner palabras significativas, porque así se
aumenta al legibilidad del código que no te puedes ni imaginar.

Buenas noches, Erny





---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.384 / Virus Database: 216 - Release Date: 21/08/02
------------ próxima parte ------------
An embedded and charset-unspecified text was scrubbed...
Name: practica.py
URL: <http://mail.python.org/pipermail/python-es/attachments/20020831/808eb286/attachment.ksh>


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