如何提取字典中Process.Extract模糊匹配结果的索引值
提取complete_dict中所有模糊匹配结果索引值的实现方法
你的complete_dict中,每条模糊匹配结果的元组固定为(匹配文本, 相似度得分, 目标索引)格式,注意:该索引是你传入的待匹配字典find_desc_dict中对应条目的键,位置在元组的第三个元素(Python下标为2),直接遍历字典取值提取即可。
基础易读版本(循环实现)
逻辑清晰,适合新手理解,默认保留所有重复出现的索引值:
all_index = [] # 遍历字典中所有搜索关键词对应的匹配结果列表 for result_list in complete_dict.values(): # 遍历单条搜索词下的每一条匹配记录 for single_match in result_list: # 提取元组第三位的索引值存入结果 all_index.append(single_match[2])
如果需要得到不重复的索引集合,直接对结果去重即可:
# 转集合去重后再转回列表 unique_index = list(set(all_index))
简洁版本(推导式实现)
用列表/集合推导式可以一行完成提取,代码更紧凑:
# 提取所有索引(保留重复值) all_index = [match[2] for res_list in complete_dict.values() for match in res_list] # 直接提取去重后的索引 unique_index = list({match[2] for res_list in complete_dict.values() for match in res_list})
注意事项
- 遍历字典时直接调用
values()方法取所有匹配结果列表,比先遍历key再查值的写法效率更高 - 如果使用的Python版本低于3.7,直接用
set()去重会打乱索引原有的出现顺序,需要保序的话可以用如下写法:
# 保序去重 unique_index = list(dict.fromkeys(all_index))
用你给出的示例结构运行上述代码,去重后得到的索引结果为[19, 20, 92, 205],和示例中存储的索引值完全一致。
内容的提问来源于stack exchange,提问作者f4tihkurt
相关产品推荐
相关产品推荐

