[pyar] variable que referencia a otra
Javier Marcon
javiermarcon en gmail.com
Jue Mar 20 15:21:59 ART 2014
Muchas gracias a todos, esta es la opción que voy a probar.
El 20/03/14 14:17, Roberto Alsina escribió:
> On 20/03/14 14:05, Javier Marcon wrote:
>> El 20/03/14 10:02, Facundo Batista escribió:
>>> 2014-03-20 9:35 GMT-03:00 Javier Marcon <javiermarcon en gmail.com>:
>>>
>>>> Gracias a todos. Que es lo malo de tener un diccionario que sea una
>>>> referencia a datos de un diccionario recursivo? Cual es la forma que
>>> Eso no suena malo, parece de lo más normal.
>>>
>>> Lo que es raro es que lo quieras hacer con *variables*.
>>>
>> En realidad yo lo quiero hacer con una lista que cada elemento de la
>> lista referencie a un elemento de un diccionario recursivo. Por ejemplo:
>>
>> Por ejemplo yo tengo esto:
>>
>> datos = {
>> "a": "pepe",
>> "b": {"b1": "casa", "b3": "ojota", "b4":
>> [{"asd": {"aaa": 1, "bbb": False}}, {"dss": "asdf"}]},
>> "d": {"rrr": True, "jj": 9}
>> }
>>
>> def retrieve(parametros=(), datos={}):
>> z = ()
>> for x in parametros:
>> z = z + (datos[x], )
>> return z
>>
>> print retrieve( ("a","b[b1]"), datos )
>> print retrieve( ("b[b4][0][asd][bbb]","d[jj]"), datos )
>>
>> Pero al correrlo me da error cauando quiere hacer el primer print:
>> z = z + (datos[x], )
>> KeyError: 'b[b1]'
>>
>> Como puedo hacer eso pero para que funcione?
>
> En realidad lo que queres son árboles :-)
>
> Pero burno, primero, fijate que para obtener 'casa', lo que queres es
>
> >>> datos['b']['b1']
> 'casa'
>
> Yo usaría como parametros una tupla de listas, como (['a'], ['b',
> 'b1']) y definiría una funcioncita que hace las dereferencias (no lo
> probé):
>
>
> def deref (l):
> v = datos
> while l:
> k = pop(l)
> v = v[k]
> return v
>
> De esa manera, si en retrieve haces deref(('b', 'b1)) te deberia
> devolver 'casa'
>
> Se podría hacer manteniendo la sintaxis que te gusta en los parametros
> usando eval y cosas asi, pero estas manipulando el scope de tu funcion
> y eso es una receta para romper todo en maneras imprevisibles. Mejor
> mantener los datos como datos.
>
> De todas formas, me huele muy feo que tengas los parámetros en ese
> formato, creo que todo este código es simplemente tratar de hacer
> funcionar algo con unos datos de entrada muy raros.
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
More information about the pyar
mailing list