Estructuras de datos

Hernán Martínez Foffani hernan en orgmf.com.ar
Vie Sep 10 13:26:45 CEST 2004


No entiendo.  Entonces ¿Cómo extraes los datos de la estructura
pasándole la susodicha tupla?  ¿Como obtienes los valores de los
campos?

> Si tienes razón con lo de los indices. Pero no los conozco. Lo que
> quiero es una función donde yo le diga modifica el tipo del campo
> "Ncampo1" dentro de la tabla "Ntabla1". O bien inserta el campo
> "Ncampo2" en la tabla "Ntabla2". La función tiene que ser genérica,
> por esto mi idea era de pasarle la ruta en una lista de tuplas
> ("TABLA","NTabla1", etc.). Por ejemplo si voy a cambiar los tags en
> el fichero la función no se tiene que enterar.
>
> Un saludo,
>
>
>
> ----- Original Message -----
> From: "Hernán Martínez Foffani" <hernan en orgmf.com.ar>
> To: "La lista de python en castellano" <python-es en aditel.org>
> Sent: Friday, September 10, 2004 10:58 AM
> Subject: RE: [Python-es] Estructuras de datos
>
>
>> (leer este mensaje en fuente de letra monoespaciada.)
>>
>>> <TABLA>
>>>     <TABLA_ID>Ntabla1<\TABLA_ID>
>>> ... resto cortado...
>>> <\TABLA>
>>>
>>> Lo leo y lo guardo de esta forma:
>>> result = {'TABLA': [{'TABLA_ID': ['Ntabla1'], 'DESCRIPCION':
>>> ['Descripcion1'], 'CAMPOS': [{'CAMPO': [{'CAMPO_ID': ['Ncampo11'],
>>> 'TIPO': ['Tcampo11']}, {'CAMPO_ID': ['Ncampo12'], 'TIPO':
>>> ['Tcampo12']}]}], 'FECHAHORA': ['Fechahora1']}, {'TABLA_ID':
>>> ['Ntabla2'], 'DESCRIPCION': ['Descripcion2'], 'CAMPOS': [{'CAMPO':
>>> [{'CAMPO_ID': ['Ncampo21'], 'TIPO': ['Tcampo21']}, {'CAMPO_ID':
>>> ['Ncampo22'], 'TIPO': ['Tcampo22']}]}], 'FECHAHORA':
>>> ['Fechahora2']}]}
>>>
>>> Para extraer valores bastante sencillo. Pero para insertar, o
>>> modificar no tanto. Como parámetro le estoy pasando una lista de
>>> tuplas [("TABLA","Ntabla1"),("CAMPOS",""),("CAMPO","Ncampo11")].
>>> Esto me devuelve {'CAMPO_ID': ['Ncampo11'], 'TIPO': ['Tcampo11']}
>>> (justo lo que necesito).
>>>
>>> Por favor díganme como puedo insertar campos nuevos y modificar
>>> valores de campos existentes.
>>
>> La estructura de datos es un diccionario de listas cuyos elementos
>> son cadenas o diccionarios de listas cuyos elementos ... etc etc ...
>> :-) Con ese tipo de estructura para acceder a los elementos lo haces
>> alternando indices del tipo cadena (para el diccionario) y tipo
>> entero (para la lista). Ej.
>>
>> Para el valor del campo 3 de la tabla 5:
>>
>>    data['TABLA'][3]['CAMPOS'][0]['CAMPO'][5]
>>
>>
>> Para agregar usa append o insert:
>>
>>                     +----------------------- El numero de la tabla a
>>                     |                        modificar dentro de la
>>                     |                        lista empenzando de 0.
>>                     | v      vvvvvvvvvvvvv---- Esto es siempre lo
>> mismo.
>>>>> result['TABLA'][0]['CAMPOS'][0]['CAMPO']
>> [{'CAMPO_ID': ['Ncampo11'], 'TIPO': ['Tcampo11']},
>> {'CAMPO_ID': ['Ncampo12'], 'TIPO': ['Tcampo12']}]
>>
>>>>> result['TABLA'][0]['CAMPOS'][0]['CAMPO'].append(
>> {'CAMPO_ID': ['Ncampo13'], 'TIPO': ['Tcampo13']})
>>>>> result['TABLA'][0]['CAMPOS'][0]['CAMPO']
>> [{'CAMPO_ID': ['Ncampo11'], 'TIPO': ['Tcampo11']},
>> {'CAMPO_ID': ['Ncampo12'], 'TIPO': ['Tcampo12']},
>> {'CAMPO_ID': ['Ncampo13'], 'TIPO': ['Tcampo13']}]
>>>>>
>>
>> Para modificar subindiza la lista:
>>
>> El elemento del campo a modificar ----------------+
>>                                                   |
>> El numero del campo a modificar -------------+    |
>> empenzando de 0                              |    |
>>                                              |    |
>> Esto igual que antes -------+                |    |
>>                             |                |    |
>>                vvvvvvvvvvvvvvvvvvvvvvvv      v    v
>>>>> result['TABLA'][0]['CAMPOS'][0]['CAMPO'][1]['TIPO'] = ['tCAMPO12']
>>>>> result['TABLA'][0]['CAMPOS'][0]['CAMPO']
>> [{'CAMPO_ID': ['Ncampo11'], 'TIPO': ['Tcampo11']},
>> {'CAMPO_ID': ['Ncampo12'], 'TIPO': ['tCAMPO12']},
>> {'CAMPO_ID': ['Ncampo13'], 'TIPO': ['Tcampo13']}]
>>>>>
>>
>> Para encontrar los indices de las listas de tablas
>> y campos usa lo que ya tiene para leer los valores.
>>
>> Alternativamente, aunque algo sucio, tambien podrias
>> mirar si puedes alterar directamente sobre el resultado
>> de la lectura.  Para que esto funcione la lectura de
>> los datos del campo no deberían estar haciendo copia
>> de los mismos.
>>
>> Acotacion al margen:
>> - Pareciera que está sobrando el nivel CAMPOS en
>> la estructura de datos.
>>
>> Saludos,
>> -H.
>>
>> _______________________________________________
>> Python-es mailing list
>> Python-es en aditel.org
>> http://listas.aditel.org/listinfo/python-es
>>
>
>
> _______________________________________________
> 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