#python #list #arguments #tuples #argparse
#python #Список #аргументы #кортежи #argparse
Вопрос:
У меня есть список, например:
L1 = [["Apple" , 1 , 200] , ["Grapes" , 4 , 100] , ["Banana" , 1 , 20]]
Используя argparse, я хочу, чтобы пользователь вводил несколько целых значений, разделенных запятыми.
Если значение пользовательского ввода существует в списке в средней позиции, т. Е. at L1[1]
, Весь этот список должен быть напечатан.
Например:
python test.py -x 1,2
Должен выводить:
Apple , 1, 200
Banana , 1 , 20
Я попытался сохранить пользовательский ввод в виде кортежа.
Как я могу сравнить эти элементы кортежа со средней позицией моих списков?
Как я могу это реализовать?
Как я должен хранить пользовательский ввод и проверять каждый элемент пользовательского ввода с помощью моего списка?
Заранее спасибо за любую помощь!
Комментарии:
1. Какой у вас вопрос по этому поводу? Была ли какая-то особая проблема, когда вы пытались это сделать?
2. Каков ваш актуальный вопрос? «Как мне принять список целых чисел, разделенных запятыми, в argparse?»
3. Как я должен хранить пользовательский ввод и проверять каждый элемент пользовательского ввода с помощью моего списка?
4. Я попытался сохранить пользовательский ввод в виде кортежа. Как я могу сравнить эти элементы кортежа со средней позицией моих списков?
Ответ №1:
Как только у вас есть целые числа пользовательского ввода в кортеже, вы можете сделать это:
user_input = (1, 2)
L1 = [["Apple", 1, 200], ["Grapes", 4, 100], ["Banana", 1, 20]]
for i in user_input:
for sublist in L1:
if i == sublist[1]:
print(sublist)
Комментарии:
1. Спасибо за вашу помощь! Большое спасибо!
Ответ №2:
In [1]: import argparse
Определите анализатор:
In [6]: parser=argparse.ArgumentParser()
In [7]: parser.add_argument('-x', nargs=' ', type=int);
протестируйте ввод. Используя nargs
и type
, я ввожу числа, разделенные пробелом, и получаю список чисел:
In [8]: args = parser.parse_args('-x 1 2'.split())
In [9]: args
Out[9]: Namespace(x=[1, 2])
Тогда его легко найти элементы L1
с пониманием списка (или цикла, если вы предпочитаете):
In [10]: L1 = [["Apple" , 1 , 200] , ["Grapes" , 4 , 100] , ["Banana" , 1 , 20]]
In [11]: [val for val in L1 if val[1] in args.x]
Out[11]: [['Apple', 1, 200], ['Banana', 1, 20]]
Комментарии:
1. Спасибо за вашу помощь! Большое спасибо!