Поиск Наилучшего Соответствия В Файле Json

#python #json #search

Вопрос:

У меня есть файл json с чем-то вроде этого:

 {
"Cars": [
 {
  "name": 'Honda'
  "color": 'Black'
  "age": 'Old'
  },
 {
  "name": 'Ford'
  "color": ' Red'
  "age": 'Old'
  },
 {
  "name": 'Mazda'
  "color": 'Black'
  "age": 'New'
  }
 ]
}
 

Я хочу написать функцию, которая предложит пользователю указать имя, цвет и возраст, а затем выполнит поиск в json и вернет объекты, которые наилучшим образом соответствуют параметрам поиска. Я также хочу, чтобы пользователь мог вводить только некоторые параметры.

Примеры:

  • Пользователь вводит {«имя»:»Honda», «цвет»:Нет, «возраст»:Нет}, возвращает всю информацию для Honda
  • Пользователь вводит {«имя»:Нет, «цвет»: «Черный», «возраст»: Нет}, возвращает всю информацию для Honda и Mazda
  • Пользователь вводит {«имя»:Нет, «цвет»: «Черный», «возраст»: «Новый»}, возвращает всю информацию для Mazda

Я не могу придумать никаких программных способов сделать это, которые не были бы невероятно неэффективными. Лучшее, что я могу придумать, — это в основном поиск по всему Json совпадений с первым ключом, затем поиск совпадений со вторым ключом, затем поиск совпадений с третьим ключом, а затем печать результата. Пропуск ключей, которых нет в полезной нагрузке запроса, поможет, но это все равно кажется действительно неэффективным.

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

Комментарии:

1. Ну, если вы хотите найти «лучшую пару»… можете ли вы придумать правило, которое говорит вам, «насколько хорош» матч?

2. Я не хочу находить «лучшее» совпадение, я хочу «лучший» способ найти » все » совпадения. Проще говоря, я хочу, чтобы пользователь мог ввести 1-3 параметра и получить каждый объект json, у которого есть хотя бы эти параметры. Ты задаешь мне этот вопрос в основном из-за того, почему я здесь. Похоже, я не мог найти в Google/стеке правильные слова, чтобы получить те решения, которые я ищу. Я знаю, что это не новая почва, просто у меня возникли проблемы с выявлением общих методологий.

3. По сути, вы просите нас разработать приложение для базы данных и научить вас, как его кодировать. Это слишком широко для переполнения стека. Вы просите предоставить возможность поиска с помощью подстановочных знаков или просто неограниченных параметров. Вам нужно изучить существующие пакеты баз данных или, возможно, просто изучить интерфейс фрейма данных PANDAS.

4. Я думаю, что создать базу данных Pandas, вероятно, проще, чем пытаться искать файл JSON. Спасибо за записку.

Ответ №1:

 #lets say your json is stored in variable json_var
car_name=input("car name")
car_color=input("car color")
car_age=input("car_age")

car_list=[]
for cars in json_var["cars"]:
    if (cars["name"]==car_name or cars["color"]==car_color or cars["age"]==car_age):
        car_list.append(cars["name"])

print(car_list)