Как связать элементы одного списка с элементами другого списка с условием в Python?

#python #loops #if-statement #conditional-statements

Вопрос:

У меня есть два списка, и я хочу распечатать элемент первого списка и элемент второго списка на основе условия. Например, я хочу напечатать языки, связанные с использованием средств проверки, и язык, связанный с использованием средств перевода. Я не знаю, как включить это условие. Как печатать, не повторяя один и тот же язык? Мой код до сих пор приведен ниже:

 tools=['translation;proofing','proofing','translation', 'language learning;proofing']
languages=['catalan;English', 'italian', 'french, german', 'english, portuguese']
for i in range(len(tools)):
    for j in tools:
        if "proofing" in j:
            print(languages[i])
 

Мой результат должен быть примерно таким:

Корректура: каталанский, английский, итальянский, португальский

Перевод: каталанский, Английский, французский, немецкий

Ответ №1:

IIUC, попробуй:

 proofing = list()
translation = list()
for t, l in zip(tools, languages):
    if "proofing" in t:
        proofing.append(l)
    if "translation" in t:
        translation.append(l)

>>> proofing
['catalan;English', 'italian', 'english, portuguese']

>>> translation
['catalan;English', 'french, german']
 

Если вместо этого вы имеете в виду, что хотите интерпретировать один элемент списка «каталанский;английский» как два языка, попробуйте использовать set примерно так:

 proofing = set()
translation = set()
for t, l in zip(tools, languages):
    components = [x.strip().capitalize() for x in l.replace(",", ";").split(";")]
    if "proofing" in t:
        proofing.update(components)
    if "translation" in t:
        translation.update(components)

>>> proofing
{'Catalan', 'English', 'Italian', 'Portuguese'}

>>> translation
{'Catalan', 'English', 'French', 'German'}