busqueda en diccionario, pero sin la palabra exacta

Luis Peralta peralta en aditel.org
Mie Ago 29 13:52:26 CEST 2007


Hola Sebastián,

El 28/08/07, Sebastian Martin Artaza Saade <martin.artaza en gmail.com> escribió:
> Queria preguntar hay algo echo sobre busqueda no exacta, donde puedo leer al
> respecto.

   No sé si he entendido exactamente lo que decías, pero lo que he
entendido parecía interesante ;) Lo primero que se me ha ocurrido ha
sido heredar de DictMixin[1], que te permite crear tu propia clase de
diccionario implementando 4 métodos con el comportamiento que quieres:
keys, __getitem__, __setitem__ y __delitem__.

   Así, he conseguido esto:

>>> import MipsDict
>>> d = MipsDict.MipsDict()
>>> d['[0,0,0]']=[1,1,1]
>>> d['[1,0,1]']=[1,0,1]
>>> d['[1,2,1]']
[1, 0, 1]

Y la clase:

from UserDict import DictMixin

class MipsDict(DictMixin):

    def __init__(self):
        self.mydict = {}

    def __getitem__(self, item):
        try:
            return self.mydict[item]
        except KeyError:
            for key in self.mydict.keys():
                if item.replace("2", "0") == key.replace("2","0"):
                    return self.mydict[key]
            raise KeyError

    def __setitem__(self, item, value):
        self.mydict.__setitem__(item, value)

    def keys(self):
        return self.mydict.keys()

    def __delitem__(self, item):
        return self.mydict.__delitem__(item)

[1]: http://python.org/doc/current/lib/module-UserDict.html

Espero que te sirva para un comienzo. Un saludo,
-- 
http://www.ziritione.org




Más información sobre la lista de distribución Python-es