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

Python函数在for循环调用时仅首次返回正确值的原因解析

字典值转键函数的逻辑错误分析

原代码

myDict = {
    "a":1,
    "b":2,
    "c":3
}


def get_ky(val):
    for key, value in myDict.items():
        if val == value:
            return key
        else:
            return "no match"


myList = [1,2,3]


for i in myList:
    print(get_ky(i))

运行结果

a
no match
no match

问题原因

问题出在get_ky函数的循环逻辑:

  • 传入1时,循环第一次匹配到"a":1,直接返回"a",结果正确。
  • 传入2时,循环首次取到的是"a":1,此时2 != 1,函数立刻执行else分支返回"no match",完全没机会遍历后续的"b":2。
  • 传入3时同理,仅检查第一个键值对就返回失败,不会继续查找后续项。

修正方案

只有遍历完所有键值对都未匹配时,才返回"no match",修改后的函数如下:

def get_ky(val):
    for key, value in myDict.items():
        if val == value:
            return key
    # 遍历结束后仍无匹配才返回
    return "no match"

修改后运行代码,会输出正确结果:a、b、c。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 05:01:01