You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将单ID特征提取函数改造为嵌套字典输出?

改造单ID特征提取函数为多ID版本的实现方案

你现有的函数已经能正常处理单个ID,要改成支持多ID的版本,核心思路就是外层加循环遍历所有目标ID,把每个ID的处理结果存入以ID为键的大字典里,具体步骤和代码如下:

关键修改点

  • 调整函数参数:让它能接受单个ID或者多个ID的集合(列表/元组),先统一转成列表避免类型问题
  • 复用原单ID处理逻辑:把原函数的核心逻辑抽成内部辅助函数,顺便修正原函数名字的拼写错误:exctract→extract
  • 优化原逻辑冗余:用字典get方法替代列表推导式查ID,更简洁高效;把重复的字符串拆分逻辑移到循环外,减少不必要的计算

修改后的完整代码

import re

def extract_ft_def(ids):
    # 统一处理参数:单个ID转列表,可迭代对象直接用
    if not isinstance(ids, (list, tuple)):
        ids = [ids]
    
    final_results = {}
    
    # 封装单个ID的处理逻辑
    def process_single_id(id_):
        results = {}
        # 直接用get获取对应数据,默认空列表
        text_list = names_t.get(id_, [])
        features_list = names_ft.get(id_, [])
        # 扁平化嵌套列表
        text = [item for sublist in text_list for item in sublist]
        features = [item for sublist in features_list for item in sublist]
        
        for keyword in features:
            keyword_found = False
            for sentence in text:
                result = re.search(f'({keyword}): (.+)\n', sentence)
                if result:
                    keyword_found = True
                    results[result.group(1)] = result.group(2)
                    break
            if not keyword_found:
                results[keyword] = None
        
        # 统一处理字符串拆分,只执行一次
        results = {key: value.split(' - ')[-1] if value is not None else None 
                   for key, value in results.items()}
        return results
    
    # 遍历所有ID,生成嵌套结果字典
    for id_ in ids:
        final_results[id_] = process_single_id(id_)
    
    return final_results

代码说明

  1. 参数兼容:不管传入单个ID(如extract_ft_def("id001"))还是多个ID的列表(如extract_ft_def(["id001", "id002"])),函数都能正常处理
  2. 内部辅助函数:把原单ID的逻辑封装后,代码更清晰,也方便后续单独调整单ID的处理规则
  3. 结果结构:返回的final_results是嵌套字典,键为目标ID,值为对应ID的特征-文本映射字典

内容的提问来源于stack exchange,提问作者ella

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 11:52:49