Python函数根据输入数字返回字段名时返回错误值
问题分析与修复
你的代码存在两个核心问题,导致返回结果不符合预期:
- 参数被覆盖:函数内部第一行直接将传入的
bldgcode参数重新赋值为字典,导致输入的数字参数完全没被用到。 - 循环错误返回:
for values in bldgcode遍历的是字典的键,第一次循环拿到第一个键1就立刻执行return,所以不管传入什么参数,都会返回1。
修复后的最优写法
直接利用字典的键值映射特性,无需循环:
def GetFieldName(bldgcode): # 单独定义映射字典,避免覆盖传入的参数 code_to_field = { 1: "SFCount", 2: "MFCount", 3: "ComCount", 4: "IndCount", 5: "CityCount", 6: "ShedCount", 7: "SchCount", 8: "ChurCount" } # 用get方法取值,第二个参数是键不存在时的默认返回值 return code_to_field.get(bldgcode, "未知字段") # 测试 print(GetFieldName(8)) # 输出:ChurCount
循环实现版本(仅作演示)
如果一定要保留循环逻辑,需要遍历键值对并匹配输入参数:
def GetFieldName(bldgcode): code_to_field = { 1: "SFCount", 2: "MFCount", 3: "ComCount", 4: "IndCount", 5: "CityCount", 6: "ShedCount", 7: "SchCount", 8: "ChurCount" } for key, field_name in code_to_field.items(): if key == bldgcode: return field_name return "未知字段" # 未匹配到键时返回 # 测试 print(GetFieldName(8)) # 输出:ChurCount
内容的提问来源于stack exchange,提问作者PieCharmer
相关产品推荐
相关产品推荐

