Bill Mill schrieb:
Hello all,
What data structure would you use to implement something analogous to
the iTunes search? I imagine that it must be a tree of some sort, but I
can't figure out an easy structure for it.
Requirements (in case you haven't used it):
You are given 4 rows in a list view:
[[alpha, beta], [delta, gamma], [foo, bar], [etc, etc]]
and a search text box.
Typing a in the list box leaves rows 0, 1 and 2 in the list box,
because some element in each of those rows has an a in it. Typing
am leaves only row 1, since gamma has the substring am in it.
The key here is that this works instantaneously as you type, even with
very large lists with many elements per row. I'd like the employee list
in my current application to be similarly filtered, but I don't quite
see how.
Thoughts?
Use an index. You can create one for each character, tuples of
characters and so on that are contained in a word. That makes finding
the entries a dict lookup + throwing the results together, filtering
doubles.
I guess you can stop using indices at 3 or 4 characters, and then
linearily search through the rest of the possibilities linearily.
Diez
--
http://mail.python.org/mailman/listinfo/python-list