continuo con las listas de cadenas de caracteres

Chema Cortés chemacortes en wanadoo.es
Sab Ago 31 00:01:39 CEST 2002


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

> (tengo un problemilla con mi correo)

Tan sólo un consejo: en el nombre de usuario del correo quita los < y > que
tienes en "< Sonia >". Esos símbolos se usan normalmente para delimitar la
dirección de correo.


> a ver! tengo 2 versiones del programa de la lista de cadenas de
> caracteres y ninguno
> me funciona. no se puede hacer sin utilizar el get??

Sí que se puede, pero resulta más cómodo. Si 'D' es un diccionario, D.get(k)
es equivalente a D[k]. La diferencia es que si la clave k no existe D[k] da
error, mientras que D.get(k) devolvería el valor por defecto (asignado por
D.setdefault()). Si empleas D.get(k,v), en lugar de devolver el valor por
defecto devuelve v.

Si no quieres usar get, y no quieres que se produzcan errores, tienes dos
opciones:

1) capturar el error (try..except)
2) comprobar que la clave existe con d.has_key()

Pero lo mejor es el d.get(), que seguro tiene que funcionar.


> aki os pongo los 2 errores de ejecucion. a ver si hay solucion!
>
>
> 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

Lo más seguro es que 'frecuencia' no lo hayas definido como
diccionario. ¿Cómo está definido? Pásanos el código completo. He revisado el
código que enviaste a la lista, y veo que inicializas frecuencia así:

frecuencia=[]

Si te fijas en el código que te hemos mandado, ponemos:

frecuencia={}

Son llaves, no corchetes. Con llaves {} estamos creando un diccionario vacío.
Con los corchetes estarías creando una lista vacía (si no entiendes algo, no
dudes en preguntar).

Y por cierto, cambia el nombre al fichero. 'def' es un nombre reservado.


> Las lista inicial es:
> ['pepe', 'dale', 'amigo', 'ernesto']
> Traceback (innermost last):
>   File "A:\pra4.py", line 35, in ?
>     res = pra4(lista)
>   File "A:\pra4.py", line 9, in ex
>     frecuencia[letra]=frecuencia[letra,0]+1
> TypeError: sequence index must be integer

Aquí frecuencia[letra,0] no es correcto. Supongo que lo que querías hacer era
algo como frecuencia.get(letra,0). Aquí veo claramente que has definido 
frecuencia como lista (pide que el índice sea un entero).


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

iD8DBQE9b+tDHLTQrABk8H0RAl6QAJ0UDXOEQuuYcmD6ZVT0G85DtNaxXQCg5Rk3
lAYlf+8+50y1VTWdXWjMVqc=
=GnaN
-----END PGP SIGNATURE-----





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