python - 字典对象搜索

标签 python json algorithm search data-structures

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

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

最佳答案

如果您的数据集与您发布的完全一样,那么您可以创建一个包含{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))。

关于python - 字典对象搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55276753/

相关文章:

python - 在 Python 中最后一次出现给定字符后查找字符串字符的最简单方法是什么?

android - JSON omdb解析

android - 如何使用 Volley 在 JSON 中的数组中获取数组中的元素

.net - 处理平面文件

java - 算法:计算请求数

python - 递归如何找到最大值?

python - 如何在不修改该参数的情况下更新由基类的可变默认参数创建的属性?

python - 使用带有 MacOSX 后端的 python matplotlib 设置图形的绝对位置

json - 如何停止 Pandas Dataframe read_json 方法将我的时代转换为人类可读的字符串

android - 安卓设备位置图