[pyar] Necesito una estructura para deduplicar diccionarios complejos

Daniel Moisset dmoisset en machinalis.com
Jue Abr 30 11:14:15 ART 2015


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.

O sea, tu self._deduplic podría ser un diccionario que mapea hashes a
diccionarios. y haces algo como

        # llego acá con "data" que es el dict a deduplicar
        data = self._deduplic.setdefault(dhash(data), data)

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
computas mas de una vez por diccionario

Saludos,
D.

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

> 2015-04-30 10:31 GMT-03:00 Daniel Moisset <dmoisset en machinalis.com>:
>
> > El diccionario se construye afuera? Es un poco mas facil construirlo
> > deduplicado que deduplicarlo luego
>
> El diccionario lo armo yo (no entendí lo de "afuera"). La construcción
> del árbol es un quilombito importante (es un trie con nodos genéricos
> para ser tolerante a errores en el cálculo de prefijos, lo voy a usar
> para autocompletar).
>
> El código está acá:
> http://bazaar.launchpad.net/~facundo/ftrie/trunk/view/head:/src/ftrie.py
>
>
> > El contenido del diccionario es inmutable? Si no lo es, que  puede
> cambiar
> > (claves, contenido)
>
> El contenido es inmutable. Pero lo "voy armando"... o sea, no puede
> nacer inmutable, pero lo puedo "congelar" al final.
>
> Slds.
>
> --
> .    Facundo
>
> Blog: http://www.taniquetil.com.ar/plog/
> PyAr: http://www.python.org/ar/
> Twitter: @facundobatista
> _______________________________________________
> 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
>



-- 
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/a94c2be5/attachment.html>


More information about the pyar mailing list