如何将此重复代码转换为函数

莱拉田

我有一些重复的代码。我试图检查句子列表中的每个句子是否在开头都包含某个单词。如果没有,我希望它做一些事情,然后在字典中打印值。否则,我希望它做其他事情,然后再打印一本字典。

但是我不知道如何将有问题的重复代码转换为函数,因为我需要在重复代码内的第一个循环开始时使用一个变量。

到目前为止,这是我的代码:

if not audio_keyword_dictionary:
    for index, sentence in enumerate(sentences):
        keyword_set_inside_dict = set()
        for each_keyword in complete_keyword_list:
            if each_keyword in sentence:
                keyword_set_inside_dict.add(each_keyword)
                keyword_dict[sentence] = keyword_set_inside_dict

    for key, value in keyword_dict.items():
        print(f'{value} - {key}\n')

else:
    for index, sentence in enumerate(sentences):
        keyword_set_inside_dict = set()
        for each_keyword in complete_keyword_list:
            if each_keyword in sentence:
                keyword_set_inside_dict.add(each_keyword)
                keyword_dict[sentence] = keyword_set_inside_dict

                for each_value in audio_keyword_dictionary.values():
                    if each_value in sentences[index - 1] and sentences[index - 1] != '':
                        audio_nested_dictionary[each_value] = keyword_dict

    for k, v in audio_nested_dictionary.items():
        for key, value in v.items():
            print(f'{k} - {value} {key}\n')

这是我创建的函数:

def iterate_sentences(sentences, keyword_list):
    keyword_dict = dict()
    for index, sentence in enumerate(sentences):
        keyword_list_inside_dict = list()
        for each_keyword in complete_keyword_list:
            if each_keyword in sentence:
                keyword_list_inside_dict.append(each_keyword)
                keyword_set = set(keyword_list_inside_dict)
                keyword_dict[sentence] = keyword_set

    return keyword_dict

但是如果我需要重复部分之外的“索引”,我该如何使用它?

在这部分中,准确地说,就在重复部分结束的地方之后:

                for each_value in audio_keyword_dictionary.values():
                    if each_value in sentences[index - 1] and sentences[index - 1] != '':
                        audio_nested_dictionary[each_value] = keyword_dict

不确定是否需要说,但句子是遵循某种模式的句子列表。它以包含 的字符串开头audio{positive_number_here},然后是另一个具有实际含义的字符串,然后是另一个audio{positive_number_here + 1}等等,在两者之间交替。该列表以一个有意义的字符串结尾。

巴马

你不需要一个函数来摆脱重复。只需移动if语句。

for index, sentence in enumerate(sentences):
    keyword_set_inside_dict = set()
    for each_keyword in complete_keyword_list:
        if each_keyword in sentence:
            keyword_set_inside_dict.add(each_keyword)
            keyword_dict[sentence] = keyword_set_inside_dict

            if audio_keyword_dictionary:
                for each_value in audio_keyword_dictionary.values():
                    if each_value in sentences[index - 1] and sentences[index - 1] != '':
                        audio_nested_dictionary[each_value] = keyword_dict

if audio_keyword_dictionary:
    for k, v in audio_nested_dictionary.items():
        for key, value in v.items():
            print(f'{k} - {value} {key}\n')
else:
    for key, value in keyword_dict.items():
        print(f'{value} - {key}\n')

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章