在 Python 中列出需要的帮助:如何避免调用重复代码

List in Python help needed: how to Avoid calling repetitive code

我的函数如下所示:

def _extract_parent(matched_list, json_data, info_type):
    return [json_data[match_lst][info_type] for match_lst in matched_list]

parent_lst = list(map(lambda x: _extract_parent(x,json_data, "parent_info"), flashtext_matched_pattern))

family_lst = list(map(lambda x: _extract_parent(x, json_data, "family_info"),flashtext_matched_pattern))

这段代码对我有用。但我想优化它 我一直从外部调用映射,而不是我想在 _extract_parent 函数内部进行映射并调用函数

res = _extract_parent(flashtext_matched_pattern, json_data, "parent_info")  

我的 JSON 看起来像这样:

{ "power series": {
        "parent_info" : "abc",
        "family_info" : "xyz",
        "base_info" : "pqr"
  }
}

flashtext_matched_pattern 是一个列表列表,如下所示。它可以有空列表以及示例中显示的值

[[],
 ['power series'],
 [],
 [],
 [],
 []]

因此,如果幂级数匹配,它会给我我请求的信息示例 parent_info 或 family_info。

现在想优化一下代码。我想扩充 _extract_parent 函数以包含映射部分,并调用 _extract_parent 函数,如

parent_lst = _extract_parent(flashtext_matched_pattern, json_data, "parent_info")
family_lst = _extract_parent(flashtext_matched_pattern, json_data, "family_info")

我怎样才能做到这一点?在这方面的任何帮助将不胜感激

还是我想错了方向,这会是更好的解决方案吗?如果对于每个匹配条目,return 一个包含元数据父项、家族和基本信息的元组。 (如果是的话怎么做)

您通过 maplambda 调用代码的长语句只是进行另一个列表理解的一种不方便的方式:

parent_lst = [_extract_parent(x,json_data, "parent_info")
              for x in  flashtext_matched_pattern]

如果您想在函数中执行所有操作,可以使用嵌套列表理解来实现:

def _extract_parent(list_of_match_lists, json_data, info_type):
    return [
             [json_data[match][info_type] for match in match_list]
             for match_list in list_of_match_lists
           ]