Estructuras de datos

Miguel Angel Garcia miguela.garcia3 en alu.uclm.es
Vie Sep 10 13:09:49 CEST 2004


¿Y qué tal utilizar libxml o, al menos, algunos objetitos? Siento
decírtelo, pero eso de  
  data['TABLA'][3]['CAMPOS'][0]['CAMPO'][5]
Lo entiendes ahora, pero no dentro de 2 semanas...

El vie, 10-09-2004 a las 11:54, Catalin Lungu escribió:
> 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
-- 
Miguel Ángel García
http://arco.inf-cr.uclm.es/~miguel

Software Libre para Gente Libre
Free Software for Free People
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Esta parte del mensaje está firmada	digitalmente
URL: <http://mail.python.org/pipermail/python-es/attachments/20040910/073da42f/attachment.pgp>
------------ 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