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

Python如何匹配code变量前2/3位编码并返回字典对应国家键

代码问题修复方案

原代码核心错误点

  • or逻辑使用错误:Python中a or b的判断规则是如果a为真值(非0、非空等)就直接返回a,不会再计算b。你的代码里前两位截取的是56,为非0真值,所以永远只会拿到前两位的数值,不可能匹配到冰岛对应的3位编码569。
  • 变量作用域错误:前缀数值value定义在函数外部,不会随传入函数的code动态计算,复用性差。
  • 错误提示逻辑错误:循环中每匹配失败一个国家就打印"Code not valid",会出现多次错误输出,不符合实际需求。

修改后可运行代码

code = "569010002151" 
countrycode = {
    "Norway": 70,
    "Denmark": 57,
    "Sweden": 73,
    "Finland": 64,
    "Iceland": 569
}

def country(code):
    # 先后提取前3位、前2位的数值,优先匹配更长的3位编码避免误判
    prefix_list = [int(code[:3]), int(code[:2])]
    for k, v in countrycode.items():
        if v in prefix_list:
            print(f"The code is from {k}")
            # 匹配成功直接返回终止函数
            return
    # 所有国家都匹配失败再输出错误
    print("Code not valid")
          
country(code)

关键修改说明

  • 把前缀提取改成了先取前3位、再取前2位的列表,优先匹配更长的3位编码,避免出现3位编码的前两位刚好命中其他国家编码的误判问题。
  • 把前缀计算逻辑移到了函数内部,保证每次传入新的code都会重新计算对应前缀。
  • 调整了错误提示的位置,只有循环完所有国家都没有匹配成功的时候,才输出无效提示。
  • 匹配成功后直接用return终止函数,避免后续不必要的循环判断。

测试你给出的示例code569010002151时,会输出预期结果The code is from Iceland。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:42:03