Создайте al oop in Python, чтобы найти любую запись из одного списка в другом списке - PullRequest
0 голосов
/ 08 марта 2020

Есть ли способ добавить только те записи из моего help_list в final_list, которые включают либо один из keywords и , либо один из magazine_names?

help_list = ["aa mag1", "aa mag2", "aa mag3", "bb mag4", "aa mag4", "bb mag2", "aa mag3", "cc mag1", "aa mag4", "ii mag4"]

keywords = ["aa", "ii"]
magazine_names = ["mag3", "mag4"]

final_list = []

for entry in help_list:    
    if any(element in help_list for element in keywords) and any(element in help_list for element in magazine_names):
        final_list.append(entry)

print(final_list)

В качестве примечания: для моего фактического кода список с ключевыми словами и список с журналами включают более 100 записей в каждом.

Ответы [ 2 ]

1 голос
/ 08 марта 2020
k_set = set(keywords)
m_set = set(magazine_names)
final_list = [h for h in help_list if h.split()[0] in k_set and h.split()[1] in m_set]
1 голос
/ 08 марта 2020

Я думаю, это то, что вы ищете:

def contains_one(item, search_terms):
    """Returns true iff any item of `search_terms` is contained in item.
    """
    for search in search_terms:
        if search in item:
            return True
    return False

if __name__ == "__main__":
    help_list = ["aa mag1", "aa mag2", "aa mag3", "bb mag4", "aa mag4", "bb mag2", "aa mag3", "cc mag1", "aa mag4", "ii mag4"]

    keywords = ["aa", "ii"]
    magazine_names = ["mag3", "mag4"]

    final_list = []

    for item in help_list:
        if contains_one(item, keywords) and contains_one(item, magazine_names):
            final_list.append(item)

    print(final_list)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...