dbf.py API question concerning Index.index_search()

Ethan Furman ethan at stoneleaf.us
Thu Aug 16 13:46:30 EDT 2012


MRAB wrote:
> On 16/08/2012 17:13, Ethan Furman wrote:
>> Currently there are:
>>
>>     .index(data)   --> returns index of data in Index, or raises error
>>     .query(string) --> brute force search, returns all matching records
>>     .search(match) --> binary search through table, returns all matching
>>                        records
>>
>> 'index' and 'query' are supported by Tables, Lists, and Indexes; search
>> (and now index_search) are only supported on Indexes.
>>
> What exactly is the difference between .index and .index_search with
> the default arguments?

.index requires a data structure that can be compared to a record 
(another record, a dictionary with the same field/key names, or a 
list/tuple with values in the same order as the fields).  It returns the 
index or raises NotFoundError.  It is brute force.

.index_search requires match criteria (a tuple with the desired values 
in the same order as the key).  It returns the index or raises 
NotFoundError (unless nearest is True -- then the value returned is 
where the match should be).  It is binary search.

So the only similarity is that they both return a number or raise 
NotFoundError.  What they use for the search and how they perform the 
search are both completely different.

~Ethan~



More information about the Python-list mailing list