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

CS50 Python DNA作业:如何对比str_test与data字典列表匹配人员

匹配逻辑解决方案

核心逻辑为逐个校验数据库中每条记录的所有STR位点是否和待测样本完全一致,具体修改方式如下:
将你原代码末尾有问题的匹配逻辑段,替换为以下代码即可:

# 匹配逻辑实现
matched = "No match"
# 遍历每一条人员记录
for person in data:
    all_match = True
    # 遍历所有STR位点做校验
    for str_name, count in str_test.items():
        # 数据库存储的数值为字符串,需转整数后再比对
        if int(person[str_name]) != count:
            all_match = False
            # 只要有一个位点不匹配,直接终止当前人员的校验
            break
    if all_match:
        matched = person["name"]
        # 找到匹配人员直接终止遍历
        break

print(matched)

逻辑说明

  • 不需要嵌套三层循环,仅需两层循环:外层遍历人员列表,内层遍历STR位点列表即可
  • 数据库读取的STR数值为字符串类型,必须转换为整数后和str_test的数值做比对,否则会因类型不一致导致匹配失败
  • 一旦发现某位点不匹配可直接终止当前人员的其余位点校验,提升运行效率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:15:07