Feature Requests item #1185383, was opened at 2005-04-18 21:26 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=355470&aid=1185383&group_id=5470
Category: Python Library Group: None Status: Open Resolution: None Priority: 5 Submitted By: Marcin Ciura (mciura) Assigned to: Nobody/Anonymous (nobody) Summary: Make bisect.* functions accept an optional compare function Initial Comment: The usability of bisect.bisect_right, bisect.bisect_left, bisect.insort_right and bisect.insort_left would increase if they accepted an optional less_than function to compare the keys. Here is my use case: I have a sorted list of reversed words and a parallel list of flags associated with these words (taken from ispell). The list of reversed words is the one searched; the flags are the result of a search. Issue #1: Now I cannot use simply a list of tuples (rev_word,flags) and a custom less_than function that compares only the first elements of two tuples. Issue #2: When a word is not found in the list, I'd like to make an educated guess as to its flags (this makes more sense in non-English languages, where e.g. infinitives have a special ending), using bisect_left and bisect_right: from bisect import * less_than = lambda x,y: x[:3]<y[:3] lp = bisect_left(word_list, given_rev_word, lt=less_than) rp = bisect_right(word_list, given_rev_word, lt=less_than) # return the union of flag_list[lp:rp] An example (given_rev_word = 'abcpqr'): word_list: 'abbx', 'abcaa', <- lp 'abcdd', 'abcss', 'abdf' <- rp Currently, the first search could be replaced with lp = bisect_left(word_list, given_rev_word[:3]) but I can see only non-nice ways to replace the other search. Rolling my own class that stores a word and its flags, with __lt__ depending on some global setting is not thread-safe, and I find such a solution too heavyweight. I hope that I expressed myself clearly enough. If not, let me know, and I'll try to clarify my point. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=355470&aid=1185383&group_id=5470 _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com