Как проверить ввод с огромным списком?

Это мой код:

while True: print(vehiclelist) reg = input('Enter registration number of vehicle: ') if reg in vehiclelist: break else: print("Invalid") 

Но он продолжает показывать его недействительным, это результат:

[Автомобиль («SJV1883R», «Honda», «Civic», 60,00), автомобиль («SJZ2987A», «Toyota», «Altis», 60,00), автомобиль («SKA4370H», «Honda», «Accord», 80,00 ), Автомобиль («SKD8024M», «Toyota», «Camry», 80.00), автомобиль («SKH5922D», «BMW», «320i», 90,00), автомобиль («SKM5139C», «BMW», «520i», 100,00), Автомобиль ('SKP8899H', 'Mercedes', 'S500', 300,00), Truck ('GB3221K', 'Tata', 'Magic', 200.00), Truck ('YB8283M', 'Isuzu', 'NPR' , 250,00), грузовик ('YK5133H', 'Isuzu', 'NQR', 300,00)]
Введите регистрационный номер автомобиля: SJZ2987A
Инвалид

Любая идея, как я могу проверить вход?

Это мой класс автомобиля:

 class Vehicle(): def __init__(self, regNo, make, model, dailyRate, available): self.regNo = regNo self.make = make self.model = model self.dailyRate = dailyRate self.available = available @property def dailyRate(self): return self.__dailyRate @dailyRate.setter def dailyRate(self, dailyRate): if dailyRate < 0: self.__dailyRate = 0 else: self.__dailyRate = dailyRate def __repr__(self): return "Vehicle('{:s}', '{:s}', '{:s}', {:.2f}, '{:s}')".format(self.regNo, self.make, self.model, self.dailyRate, self.available) 

  • Python sys.path - добавление PYTHONPATH
  • Выполнять запросы с использованием Python over Tor
  • Почему в списке нет безопасного метода «получить», как словарь?
  • Фильтрация по имени ключа объекта в Google App Engine на Python
  • оптимизированный для python режим
  • Python Разница между x = x + 1 и x + = 1
  • Python, как сделать простую анимированную загрузку во время процесса
  • отладка рассола
  • 2 Solutions collect form web for “Как проверить ввод с огромным списком?”

    Здесь проблема – это список транспортных средств, и вы не можете напрямую найти регистрационный номер внутри списка объектов транспортного средства.

    Лучшим шаблоном проектирования является использование словаря, в котором regNo будет отображаться как ключ, а объект транспортного средства будет отображаться как значение.

    Вы можете изменить свой код следующим образом:

     vehicle_details = {vehicle.regNo : vehicle for vehicle in vehiclelist} while True: reg = input('Enter registration number of vehicle: ') if reg in vehicle_details: break else: print("Invalid") 

    Вам необходимо выполнить итерацию отдельных объектов автомобиля и сравнить regNo

     def getInput(): while True: print(vehiclelist) reg = input('Enter registration number of vehicle: ') for car in vehiclelist: if reg == car.regNo: return print("Invalid") 
    Interesting Posts

    PySide ждет сигнала от основного потока в рабочем потоке

    Можете ли вы оптимизировать этот код? (Django, python)

    Сгенерировать все подмножества размера k (содержащие k элементов) в Python

    Как скомпилировать зависимости C ++ во время установки pip?

    Есть ли лучший способ перебора двух списков, получая по одному элементу из каждого списка для каждой итерации?

    Парсер JavaScript в Python

    Django: Как получить доступ к параметрам регулярного выражения URL-адресов внутри класса промежуточного программного обеспечения?

    Python: Urllib2 и OpenCV

    Запрос на фляжку и тип приложения / json

    Эффективно использовать python для расчета расстояний для хамминга

    Установка lxml в virtualenv через ошибку установки пакета: команда 'x86_64-linux-gnu-gcc' не выполнена

    Установка gstreamer 1.0 на windows для python 2.7.

    Множество индексирования многомерных массивов смены порядка оси

    Запуск сценария Python при запуске в Ubuntu

    Как использовать youtube-dl из программы python

    Python - лучший язык программирования в мире.