Vale, entonces, por lo que entiendo, la idea es comparar si un diccionario es igual a otro, ¿verdad? En tal caso, habría que tener en cuenta que el orden de los valores puede cambiar, lo cual es un problema... :|
Un cordial saludo: -- Nekmo. Sitio web: http://nekmo.com Dirección de contacto: [email protected] XMPP/Jabber: [email protected] Identi.ca: http://identi.ca/nekmo Diaspora: Nekmo El día 24 de abril de 2011 13:43, Pepe Aracil <[email protected]> escribió: > Hola Nekmo. > > Creo que me he explicado mal, la idea de usar repr() no es para parsear JSON > que para eso ya existe el módulo json. > Mi intención es cachear peticiones JSON/RPC que se traducen en diccionarios > python en el lado del server. Para lo cual necesito que estos diccionarios > puedan formar parte de las keys de un diccionario que contiene los > resultados cacheados. Para tal fin hay que transformar estos diccionarios en > objetos inmutables y repr() es una de las opciones, otra podria ser Pickle. > > Si las cadenas json/rpc son muy largas, simpre se pueden acortar en md5: > > jsonObj = { "method": "echo", "params": ["Hello JSON-RPC"], "id": 1} > result = doJsonMethod(jsonObj) > > hashable = md5.new(cPickle.dumps(jsonObj)).digest() > cache[hashable] = result > > Salud. > > > El 24 de abril de 2011 12:52, Nekmo <[email protected]> escribió: >> >> Si usas repr no te va a funcionar. Python no es igual a la sintaxis de >> Javascript (la cual es JSON). Por ejemplo, mientras que en JSON tienes >> false, true y null, en Python tienes False, True y None, lo cual te >> provocará a la hora de trabajar con el "pseudo JSON" bonitos errores >> del tipo "False no está definida", además de que como tengas algo que >> no sea un string en la key de un diccionario, a la hora de interpretar >> el JSON también te petará (en el caso de usar el módulo JSON, te >> petará al dumpear xD). >> >> Un cordial saludo: >> -- Nekmo. >> >> Sitio web: http://nekmo.com >> Dirección de contacto: [email protected] >> XMPP/Jabber: [email protected] >> Identi.ca: http://identi.ca/nekmo >> Diaspora: Nekmo >> >> >> >> El día 23 de abril de 2011 14:24, tny <[email protected]> escribió: >> > El lun, 18-04-2011 a las 18:24 +0200, Pepe Aracil escribió: >> >> Hola Lista. >> >> >> >> Tengo que cachear objetos JSON, es decir puedo encontrarme con listas y >> >> diccionarios >> >> que son mutables y por tanto al no ser "hashables" no pueden formar >> >> parte >> >> de las keys >> >> de un diccionario. >> >> >> >> Una idea es pasar todos los objetos mutables (diccionarios y listas) a >> >> inmutables (tuplas) >> >> mediante una función recursiva. >> >> >> >> Ejemplo: >> >> {"method":"foo", "params":["sota","caballo"]} --> (("method","foo"), >> >> (params,("sota","caballo"))) >> >> Este sistema se me antoja algo "Gastón" en cuanto a ciclos CPU >> >> >> >> El otro método consiste en usar la representación en cadena del objeto >> >> usando repr(objeto): >> >> repr({"method":"foo", "params":["sota","caballo"]}) -> >> >> '{"method":"foo", >> >> "params":["sota","caballo"]}' >> >> >> >> >> >> ¿Alguna idea más al respecto? >> >> >> >> Gracias. >> >> _______________________________________________ >> >> Python-es mailing list >> >> [email protected] >> >> http://mail.python.org/mailman/listinfo/python-es >> >> FAQ: http://python-es-faq.wikidot.com/ >> > >> > Voto por repr >> > >> > Y mucho mejor si deribas la clase de los objetos JSON y le añades el >> > metodo hash, de modo que te cree el hash de la representación del json >> > >> > >> > _______________________________________________ >> > Python-es mailing list >> > [email protected] >> > http://mail.python.org/mailman/listinfo/python-es >> > FAQ: http://python-es-faq.wikidot.com/ >> > >> _______________________________________________ >> Python-es mailing list >> [email protected] >> http://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ > > > _______________________________________________ > Python-es mailing list > [email protected] > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > _______________________________________________ Python-es mailing list [email protected] http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
