I would like to use binary search on a SortedList
with a key function, e.g. similarly to bisect_right()
in the bisect
module. However, SortedList.bisect_right()
only supports searching by value. How to make it work with a key function?
If you have a SortedList
already and it's sorted by the given key, you can use bisect.bisect_right
on that, e.g.:
bisect.bisect_right(sorted_list, value, key=keyfunc)
If you need to search repeatedly, it would be more efficient to create a SortedKeyList
and use its bisect_key_right()
method. The extra efficiency comes from not indexing the sorted list during a binary search, as that itself is a O(log(n))
operation.