Dict对象搜索

问题描述 投票:1回答:1

我从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)

如何优化搜索算法的复杂性?

python json algorithm search data-structures
1个回答
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))。

© www.soinside.com 2019 - 2024. All rights reserved.