Как выполнить цикл по всему списку строк внутри двух вложенных циклов и избежать избыточности, вызванной внешними циклами? - PullRequest
1 голос
/ 04 мая 2019

screenshot

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

"""
pure_data = string
transliterate_input = string
stemmed_tokens = list of dictionaries, each dictionary: key:string, value:list
translation: list of strings
"""

def parse_results(pure_data, transliterated_input, stemmed_tokens, translation):
    try:
        formatted_strings = []
        footer = "-"*50
        for d in stemmed_tokens:
            for k, v in d.items():
                found_stem = uni2ma(k)
                token_string = f"[{' + '.join([token for token in v])}]"
                translated = f"{[t for t in translation]}"
                word_string = f"original input:\n{pure_data}\nTransliterated Input:\n{transliterated_input}\nFound stem:\n{found_stem}\nparsed_results:\n {token_string}\n {translated}\n{footer}\n"
                formatted_strings.append(word_string)
        return '\n'.join(formatted_strings)
    except:
            final_str = 'There was a problem retrieving that information'

Редактировать: Предположим, у меня есть вход: карточный домик.

Он разбит на 3 строки, это три разных входа, каждый из которых обрабатывается соответственно.Но когда дело доходит до части «Перевод», вместо того, чтобы печатать только первое, второе или третье значение каждый раз, например,

Translation: House
Translation: of
Translation: cards

Он печатает:

Translation: house of cards
Translation: house of cards 
Translation: house of cards 

Я надеюсь, что этоочистить сейчас.

1 Ответ

1 голос
/ 04 мая 2019

Я думаю, что вы можете просто достичь своей цели, используя индекс для получения соответствующего элемента в переводе, вместо:

translated = f"{[t for t in translation]}"

изменить на:

idx = 0
for d in stemmed_tokens:
    for k, v in d.items():        
        ...
        translated = translation[idx]
        ...
        idx += 1     

Не знал, получу ли я недопонимание или нет.

...