Динамический оператор if на основе пользовательского ввода - PullRequest
0 голосов
/ 24 января 2019

У меня есть список с парой ключей и значений, в каждом из которых есть собственные ключевые слова.

Чтобы возвращать только определенные элементы в списке, я использую следующий цикл for с оператором if:

reduced_docs = []
for arg in reduced_docs:
    if 'amazon' in arg[1] and 'google' in arg[1]:
        print(arg[0])

Приведенный выше код вернет мне все элементы в списке, которые содержатслова амазонка и гугл.Это работает, но, как вы можете видеть, это жестко закодировано, и я хотел бы что-то вроде этого:

 reduced_docs = []
    keyword = input('enter your keywords:') keyword1 keyword2
     for arg in reduced_docs:
            if keyword in arg[1] and keyword in arg[1]:
                print(arg[0])

Как вы можете видеть в приведенном выше примере кода, он больше не жестко закодирован, но что, если у меня есть 3 ключевых слова или4 или 5?Что мне нужно сделать, чтобы создать динамический оператор if, который добавляет условие and на основе длины на входе?Пока что я не могу разобраться с этим.

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Вы можете попросить пользователя ввести ключевые слова через запятую, а затем использовать что-то вроде

 reduced_docs = []
    keywords = input('enter your keywords comma separated:')
     for arg in reduced_docs:
         to_print = []
         for keyword in keywords.split(","):
            to_print.append(keyword in arg[0])
         if all(to_print):
            print(arg[1])
0 голосов
/ 24 января 2019

all(iterable) возвращает True, если все элементы iterable имеют значение true.

Использование выражения генератора вместе с этим:

keywords = input('enter your keywords:').split()
for arg in reduced_docs:
    if all(keyword in arg[1] for keyword in keywords):
        print(arg[0])
...