Проверка уже существующих значений python 3.10

Подскажите пожалуйста, как правильно реализовать проверку вводимого значения?

data = {"ID": ''}
  
      
  while (not data["ID"].isdigit()):
      data = {"ID": input('Введите ID: ')}
      if (not data["ID"].isdigit()): 
          print('ID необходимо указать цифрами!')
      while True:
          if "ID" in data:
              print ("ID существует")
          elif "nonexistent key" in data:
              break

Соответственно тут я пытался добавить проверку по вводимому ID и если ID уже существует то появляется предупреждение

 while True:
          if "ID" in data:
              print ("ID существует")
          elif "nonexistent key" in data:
              break

Однако ожидаемо он просто ищет ключ ID и при вводу любого значения выдает предупреждение о том, что ID существует

ID существует

Собственно вопрос - где ошибка и как сделать так, что бы искал по значению ключа, которое вводится, а не по самому ключу.

Если это пригодится, то вот полный скрипт

import json
import re
import string


while True:
    print("1. Добавить новую запись пользователя")
    print("2. Добавить организацию")
    print("3. Поиск по записям")
    print("0. выйти из программы")
    cmd = input("Выберите пункт: ")


if cmd == "1":
  print ("Ввод данных")

  data = {"ID": ''}
  
      
  while (not data["ID"].isdigit()):
      data = {"ID": input('Введите ID: ')}
      if (not data["ID"].isdigit()): 
          print('ID необходимо указать цифрами!')
      while True:
          if "ID" in data:
              print ("ID существует")
          elif "nonexistent key" in data:
              break
  
  print ("Введите ФИО")

  data["Name"] = input()

  print ("Введите email")
  
  data["Email"] = input()

  print ("Введите номер телефона")

  data["Phone"] = input()
  

  with open("users.json", "a+") as file:
           file.write('\n')
           json.dump(data, file,ensure_ascii=False )


elif cmd == "2":
  print ("Ввод данных")

  data = {"companyID": ''}
  
  while (not data["ID"].isdigit()):
      data = {"ID": input('Введите ID компании: ')}
      if (not data["ID"].isdigit()): 
          print('ID необходимо указать цифрами!')
          
  
  print ("Введите название компании")

  data["Name"] = input()

  print ("Введите email")
  
  data["Email"] = input()

  print ("Введите номер телефона")

  data["Phone"] = input()
  

  with open("users.json", "a+") as file:
           file.write('\n')
           json.dump(data, file,ensure_ascii=False )



elif cmd == "3":
    while True:
        print("1. Поиск по пользователям")
        print("2. Поиск по организациям")
        cmd = input("Выберите пункт: ")
        if cmd == "1":
          print ("Введите ID пользователя")
          w = input("Введите ID : "   )
          with open("Users.json") as fin:
              for s in fin.readlines():
                 if s.find(w) > -1:
                   print(s.strip())
                   
        elif cmd == "2":          
            print ("Введите ID компании")
            w = input("Введите ID : "   )
            with open("Users.json") as fin:
                for s in fin.readlines():
                   if s.find(w) > -1:
                     print(s.strip())


elif cmd == "0":
                break

Ответы (1 шт):

Автор решения: Алексей Белкин

Переделал на примерно Вашу логику:

data = {}
flag = True
while flag:
    if "ID" in data:
        print ("ID существует")
        flag = false
    else:
        try:
            data['ID'] = int(input('Введите ID: '))
            flag = false
        except:
           print('Вводимое в ID должно быть целым числом!')

   

→ Ссылка