Python3实现两列表元素前3位匹配后输出List_B对应原数据
匹配前3位字符后输出List_B对应原始值的实现方案
原有代码的核心问题
- 循环遍历主体是List_A1存储的前3位片段,匹配成功时直接打印片段内容,没有关联回List_B的原始存储值,导致输出全是短字符片段
- 未对List_A提取的前缀做去重,List_A中两个
apple开头的元素会重复触发匹配判断,造成冗余逻辑
具体修改代码
# 基础列表定义 List_A = ["apple123","banana3","345banana","cat123","apple456"] List_B = ["apple123","345123","dog234","apple4","cat002345"] # 提取List_A所有元素的前3位,去重后生成前缀集合(提升查询效率、避免重复判断) list_a_prefix = {item[0:3] for item in List_A} # 逐行遍历List_B的原始元素,判断前缀是否匹配 for original_item in List_B: if original_item[0:3] in list_a_prefix: print(original_item)
运行输出
apple123 345123 apple4 cat002345
方案说明
- 采用集合存储List_A的前缀值,自动去重原本重复的
app前缀,查询效率远高于列表,也不会触发冗余的重复匹配逻辑 - 遍历对象为List_B的原始元素,匹配成功时直接输出当前遍历的原始值,不会丢失字符串的完整内容
- 输出顺序完全和List_B的原有元素顺序一致,和预期效果完全匹配
如果更习惯用之前的列表存储写法,仅调整匹配校验逻辑即可,效果完全一致:
List_A1 = [] for i in List_A: List_A1.append(i[0:3]) # 对List_A1做去重处理 List_A1 = list(set(List_A1)) for original_item in List_B: if original_item[0:3] in List_A1: print(original_item)
内容的提问来源于stack exchange,提问作者cjeng2
相关产品推荐
相关产品推荐

