Construyendo diccionarios (Era: Recuperando valores de diccionarios.)

Luis Rodrigo Gallardo Cruz rodrigo en nul-unu.com
Vie Jul 2 17:36:56 CEST 2004


On Fri, Jul 02, 2004 at 05:17:59PM +0200, Víctor Peinado wrote:
> ¿como puedo construir diccionarios multidimensionales "on the 
> fly", utilizando como claves cadenas que extraigo de un fichero? Me explico:
> ...
> ...
> for linea in file('usuarios.txt'):
>     # separo los datos que me interesan
>     campos = linea.split()
>     usuario, sistema = campos[0], campos[1]
>     
>     if usuario in datos:
>         # ya "he visto" a este usuario
>         # código, código
>     else:
>         # es la primera vez que este usuario utiliza este sistema
>         datos[usuario][sistema] = 1 # casca aquí

> En la penúltima línea me salta un: KeyError: 'pepito'.

Estas pensando en Perl.

Como estas en el 'else' datos[usuario] no existe. En perl la expresión
datos[usuario][sistema] le dice al interprete que quieres usar esa
clave y que el contenido debe ser un diccionario, así que lo crea
inmediatamente. Python no hace cosas si no se las pides
explícitamente, por lo que tienes que hacer algo como

    datos[usuario] = {} # Crea la entrada usuario y asignale un hash
    datos[usuario][sistema] = 1 # Crea la entrada sistema en ese hash

-- 
Rodrigo Gallardo
PGP Key ID:  ADC9BC28 
Fingerprint: 7C81 E60C 442E 8FBC D975  2F49 0199 8318 ADC9 BC28
------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es


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