Python 3中的列表的排序列表中的二分搜索的方式嗎?
假設我有一個列表的列表:Python - 列表的排序列表中的二進制搜索
list = [['A', 'B', 3], ['C', 'D', 1], ['E', 'F', 2]]
我的3D元素的內部列表與排序是:
list = sorted(list , key=itemgetter(2))
,現在名單
[['C', 'D', 1], ['E', 'F', 2], ['A', 'B', 3]]
而且現在如何使用二進制搜索(O(log(n))時間複雜度)在這個排序列表中使用來自排序完成的內部列表中的元素來搜索? 像
findBy(list, index_of_inner_list, value_of_inner_list_to_find)
外列表是巨大的。內部列表有len 50.我需要做許多查詢,以便根據與內部列表相關的條件從外部列表中提取一些元素。我正在考慮bisect
,但內心陣列會成爲我認爲的問題。
你讀過這個:https://stackoverflow.com/questions/42146482/using-bisect-on-list-of-tuples-but-compare-using-first-value-only哪裏有幾點建議用於任意鍵功能的等分實現。 – schwobaseggl
查看[bisect](https://docs.python.org/3.6/library/bisect.html#other-examples)文檔頁面上的最後一個示例。這看起來像你要去的嗎? – glibdud
@glibdud該示例從破壞OP明確要求的「O(log_N)」對分性能的關鍵字構造一個新列表。 – schwobaseggl