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