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

Python匹配姓名列表指定称谓生成新列表的逻辑错误如何解决

错误原因

代码出错的核心逻辑问题是:

  • 对列表A中的每个条目,都会完整遍历列表B的所有3个称谓,每一轮遍历不管匹配成功/失败,都会往C里加一条数据,最终每个A的条目会对应3条C的记录,总长度达到15,和预期的5条不符
  • 即使某个条目匹配到了正确的称谓,后续剩下的B元素遍历还是会触发不匹配的分支,把整个条目重复加入C

解决方法

可以用Python的for...else语法实现需求:遍历B的所有称谓,只要找到匹配的就把称谓加入C并终止当前条目的遍历;如果遍历完所有B的称谓都没找到匹配,就把整条A的条目加入C。
修正后的代码如下:

A = [
    'Anna, Mrs. James (Nadia Elf)',
    'Martin, Mr. Michael',
    'Barese, Mr. Alfred',
    'Amalfi, Mrs. Abby (J E V)',
    'Manuel, card. Louis'
]
C = []
B = ['Mrs.', 'Mr.', 'Dr.']
for i in A:
    for j in B:
        if j in i:
            C.append(j)
            break # 匹配到就跳出内层循环,不再遍历剩余称谓
    else:
        # 内层循环完整走完没触发break,说明没有匹配的称谓
        C.append(i)
print(C)

运行后输出结果和预期完全一致:
['Mrs.', 'Mr.', 'Mr.', 'Mrs.', 'Manuel, card. Louis']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:48:02