Как отсортировать взаимозаменяемые необязательные параметры - PullRequest
0 голосов
/ 10 июля 2020

У меня есть множество различных условий, которые можно передать в качестве необязательных аргументов через командную строку (например, --motortype, --flightdate, --temperature, --bodytype, et c.).

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

Я хочу просеять эти 30 файлы и выберите те, у которых тот же тип двигателя или та же дата полета, температура или тип кузова и т. д. c. Это несложно сделать даже с множеством необязательных аргументов.

Однако я ищу более надежный способ написания кода, который мог бы сравнить все эти аргументы или комбинацию этих аргументов сразу. Единственный способ, который я могу придумать для выполнения этой задачи, очень уродлив и использовал бы чрезмерное количество операторов if elif else.

Приведу короткий пример:

Вот что я бы сделал Если бы я хотел выполнить поиск по рейсам со всеми 4 параметрами

if args.motortype and args.flightdate and args.temperature and args.bodytype

#blah blah blah code that will update the dataframe to only include flights with specified
#optional parameters

Это то, что я бы сделал, если бы я хотел искать рейсы только с motortype и датой полета

if args.motortype and args.flightdate
#code that will update dataframe to only include flights with specified motortype and flightdate

Итак В заключение, проблема заключается в том, что я хочу использовать эти параметры взаимозаменяемо друг с другом, и вы можете видеть, как, если бы у меня была тонна необязательных аргументов, потребовалось бы много операторов if, чтобы охватить все возможные комбинации (например, temp и bodytype, или Flightdate, Motortype и Bodytype, или просто temp сам по себе). Но я не могу придумать какой-либо хороший способ выполнить sh эту задачу. Прокомментируйте, если что-то неясно. Я перечитывал это снова и снова, и мне это кажется ясным, но, очевидно, это немного предвзято, поэтому я обновлю вопрос, если потребуется.

...