#python #search-engine #python-jsons
Вопрос:
Мой файл JSON выглядит так
[ { "product_name": "Rakhi Special - Hamper(event according Customizable)", "product_price": "999", }, { "product_name": "New Born Welcome Home Special - Hamper(event according Customizable)", "product_price": "1000", } ]
и в этом массиве JSON более 5000 элементов, также каждый объект содержит 14 пар ключ-значение
Это мое search_engine.py. Здесь я перебираю массив JSON(со всеми 5000 элементами), и я думаю, что это может занять много времени. Существует ли какой-либо другой метод поиска ключей и значений в JSON с помощью этого типа большого файла JSON.
#!/usr/bin/env python3 # Import json module import json json_file = open('data.json',encoding="utf8") # load the json data items = json.loads(json_file.read()) # Input the item name that you want to search item = input("Enter an item name:n") # Define a function to search the item def search_price(name): for keyval in items: if name.lower() == keyval['product_name'].lower(): return keyval['product_name'],keyval['product_price'] # A lot of stuffs for making a spell proof searching algorithm # also includes lib. like difflib,scikit TF-IDF and some calculations # Check the return value and print message if (search_price(item) != None): print(f"Buy {search_price(item)[0]} at th rate of {search_price(item)[1]}") else: print("Item is not found")
Комментарии:
1. Преждевременная попытка оптимизации, как правило, не является хорошей идеей. Сколько времени занимает ваш текущий код? Как долго это «слишком долго»?
2. На самом деле я также не знаю, как рассчитать время выполнения
3. Мой коллега сказал, что это занимает 0,001 секунды на 500 объектов, но так как для этого требуется более 5000 объектов, поэтому я писал слишком долго, также данные со временем увеличиваются и могут достичь 10 000 в течение следующего месяца
4. 10-20 мс звучит не слишком неприятно, если это входит в график реагирования на человека. Попробуйте спроектировать свой код таким образом, чтобы часть поиска можно было уточнить, не влияя на то, как вызывается поиск или как загружаются данные для поиска, возможно, поместив код в класс, а затем вы можете оптимизировать его позже, если это необходимо.
5. Могу ли я векторизовать функцию search_price()