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

Python操作两个字典键值对 匹配输入输出值解决嵌套循环重复打印问题

错误原因

原代码有三个核心问题导致重复输出、逻辑不符合预期:

  • 直接遍历字典对象未调用.items()方法时,循环只会拿到字典的键,无法同时获取键和对应值,运行会直接抛出解包错误
  • 两层嵌套循环会对两个字典的键做笛卡尔积匹配,3个键的场景下会执行9次循环,必然出现重复计算、重复打印的问题
  • 缺少「字典键是否存在于输入文本」的判断逻辑,不满足需求要求
正确实现代码
score = {"hello": 5, "goodbye": 1, "how are you": 7}
word_count = {"hello": 1, "goodbye": 1, "how are you": 3}

text = input("Enter your text here: ")
text_list = text.split(" ")
text_len = len(text_list)

for keyword in score:
    # 键不存在于输入文本则直接跳过
    if keyword not in text:
        continue
    # 单轮循环直接取两个字典同键的值计算,无需嵌套
    rating = score[keyword]
    cnt = word_count[keyword]
    denominator = cnt - text_len
    # 可选:增加分母为0的判断避免除零报错
    if denominator == 0:
        print(f"关键词「{keyword}」计算时分母为0,无法输出结果")
        continue
    res = rating / denominator
    print(f"关键词「{keyword}」对应计算值:{res}")
实现说明
  • 两个字典的键完全一一对应,不需要写嵌套循环匹配,单次遍历所有键即可,从根源上避免重复匹配问题
  • 因为存在how are you这类带空格的多词键,直接判断键是否在原始输入文本字符串中即可,不要判断是否在分词后的text_list中,否则多词键会匹配失败
  • 如果想简化写法,遍历的时候可以直接同时取键和值,把循环头写成for keyword, rating in score.items()即可,不需要单独通过键索引score里的值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 11:03:20