[pyar] Necesito una estructura para deduplicar diccionarios complejos

Daniel Moisset dmoisset en machinalis.com
Jue Abr 30 11:43:36 ART 2015


2015-04-30 11:19 GMT-03:00 Facundo Batista <facundobatista en gmail.com>:

> 2015-04-30 11:14 GMT-03:00 Daniel Moisset <dmoisset en machinalis.com>:
>
> > Podes hacer content-based adressing (es lo que se hace en los repos git).
> > Usas un hash con mas bits, y supones que si el hash es igual, el
> contenido
> > es igual. Si tu hash de k bits es bueno, la probabilidad de colicion es
> 2 **
> > (-k), que puede ser tan chico como quieras.
>
> Sí, y no me joden esos falsos negativos. Pero volvemos al tema de
> hashear el diccionario, que es lo complicado.
>
> Tendría que recorrerlo con las claves (ordenadas o no), e ir
> acumulando hashes o alguna cosa así
>


Aca te puedo sugerir algo si me contas bien que tipos tienen los
diccionarios. Si las claves y las hojas son strings, un md5 de una
serializacion (qeu te garantice unicidad) debería andar


> dhash es una funcion que hashee tu contenido de algun modo. Te recomiendo
> > usar alguna subclase de dict donde puedas cachear el hash, asi no la
>
> La ventaja de tener cacheado el hash es que al armar un nuevo dict que
> abajo tiene dicts con el hash cacheado, no voy "profundo" en esa
> estructura.
>

Claro


> Pero, un objeto entero es más pesado que un dict crudo, tengo que ver
> como me pega eso en performance, también.
>

Si estas optimizando, siempre podes usar un dict crudo guardar el cache en
una key d['__dhash_cache__'], suponiendo que conoces alguna clave que
puedas distinguir. Es mas "sucio", pero bueno,  por performance.

Saludos,
   D.


-- 
Daniel F. Moisset - Technical Leader
www.machinalis.com
Skype: @dmoisset
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20150430/a6b2c7d3/attachment.html>


More information about the pyar mailing list