Если вы попробуете это, надеюсь, это сработает для вас лучше:
key = input('Enter the key: ')
for item in range(len(json_data)):
x = json_data[item]["name"]
if x is None:
continue
else:
y = x.split(' - ', 1)
data = {k.lower(): v for k, v in zip(y[::2], y[1::2])}
if key.lower() in data:
print('The value is:', data[key])
Первый оператор запрашивает только один раз выбор (вы можете обернуть это в другой l oop, чтобы контролировать это) , вместо того, чтобы спрашивать пользователя о каждом элементе ваших данных.
Затем в l oop вы просматриваете данные, чтобы увидеть, соответствует ли вообще запись пользователя.
Меня немного интересует, почему вы никогда не добились успеха с предоставленными вами данными, но если в этом файле намного больше элементов, вы бы сравнивали их только по одному, поскольку вам нужно было вводить поиск термин для каждого элемента в файле, пока он ВНУТРИ l oop. ; -)
Для немного более простой версии, которую должно быть очень легко расширить:
entered = input('Enter the key: ')
for item in json_data:
if item["name"].find(" - ") > 0:
name, item_desc = item["name"].split(' - ', 1)
if entered.lower() == name.lower():
print('The value is:', item_desc)
Надеюсь, что это поможет!