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

Это мой код:

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) 

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") 
Python - лучший язык программирования в мире.