Поиск объекта Dict - PullRequest
       3

Поиск объекта Dict

1 голос
/ 21 марта 2019

Я получил более 8000 записей из REST API. Теперь мне нужно поискать в этом наборе данных.

Мой набор данных похож на:

  data = {
        key: [ 
              {name:'foo1', 'age':22},
              {name:'foo2', 'age':23},
        ]}

Мне нужны новые методы поиска или алгоритм на Python без сложности O (n), когда я использую этот код;

for data in datas:
  if data["name"] == "foo1":
     calculate_func(data)

Как мне оптимизировать сложность алгоритма поиска?

1 Ответ

0 голосов
/ 21 марта 2019

Если ваш набор данных точно такой же, как вы опубликовали, вы можете создать словарь из {key:value}, где key будет именами, а value - возрастами.Вот так -

dict = {
'foo1': 22, 
'foo2': 23
}

Тогда, если вы можете использовать поисковый запрос напрямую, чтобы получить доступ к значению, соответствующему этому имени.например -

age = dict[searchTermName]

Таким образом, вам потребуется только O (n) время для подготовки набора данных, но для каждого поиска вам понадобится O (1) время.

Теперь, есливаш набор данных более сложен, чем этот - вы можете использовать префикс trie .Это будет один из самых эффективных способов.В каждом поиске сложность времени наихудшего случая будет O (search_term_length).Хотя это также имеет стоимость инициализации.Но это только одна временная стоимость (O(n * key_length)).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...