我已经从REST API中获取了8000多个记录。现在,我需要搜索这个数据集。
我的数据集就像:
data = {
key: [
{name:'foo1', 'age':22},
{name:'foo2', 'age':23},
]}
当我使用此代码时,我需要一种在python上没有O(n)复杂性的新搜索技术或算法;
for data in datas:
if data["name"] == "foo1":
calculate_func(data)
如何优化搜索算法的复杂度?
答案 0 :(得分:0)
如果数据集与您发布的数据集完全一样,则可以制作{key:value}
的字典,其中key
将是名称,而value
将是年龄。像这样-
dict = {
'foo1': 22,
'foo2': 23
}
然后,如果您可以直接使用搜索词来访问与该名称相对应的值。喜欢-
age = dict[searchTermName]
通过这种方式,您仅需要O(n)时间来准备数据集,但是对于每次搜索,您将需要O(1)时间。
现在,如果您的数据集比这更复杂-您可以使用prefix trie。这将是最有效的方法之一。在每次搜索中,最坏的情况是时间复杂度为O(search_term_length)。虽然它也有初始化费用。但这仅是一次成本(O(n * key_length)
)。