Возьмите несколько целых значений, разделенных запятыми, в качестве входных данных с помощью argparse и проверьте, присутствуют ли какие-либо из этих значений в списке

#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. Спасибо за вашу помощь! Большое спасибо!